Not able to execute a .sh file: /bin/bash^M: bad interpreter

Il y a quelques mois (déjà …), alors que je modifiais des scripts Linux d’installation automatique de logiciels, je me suis retrouvé avec le message suivant dans ma console.

Not able to execute a .sh file: /bin/bash^M: bad interpreter

Sur le moment je n’ai pas trop compris d’où venait le problème. Et puis je me suis rendu compte que j’avais effectué des modifications du script depuis une machine Windows et j’avais commit la nouvelle version vers mon Git.

D’où viens le problème ?

En fait, le fichier a été transféré entre des systèmes de types différents avec des conventions de nouvelle ligne différentes.
Les éditeurs de texte Windows auront un caractère de retour chariot spécial (CR + LF) à la fin des lignes pour indiquer un retour de ligne ou une nouvelle ligne, qui sera affiché de manière incorrecte sous Linux (^ M).
Souvent, c’est parce que le fichier est créé ou peut-être même édité sur un ordinateur Microsoft Windows, puis téléchargé ou transféré sur un serveur Linux. Cela se produit généralement lorsqu’un fichier est transféré à partir de MS-DOS (ou MS-Windows) sans mode ASCII ou texte.
Cela peut être difficile à détecter. En effet, certaines applications ou programmes gèrent correctement les caractères de nouvelle ligne alors que d’autres non.
Ainsi, certains services peuvent tomber en panne ou ne pas répondre correctement.

Comment résoudre le problème ?

Il existe plusieurs solutions possible 🙂

  • Le logiciel/paquet dos2unix
dos2unix monfichierAmodifier
  • sed
sed -e "s/\^M//"  monfichierAmodifier  > monfichierModifier 
  • Vim (ma solution préféré mais pas aussi rapide que dos2unix)

Après avoir ouvert le fichier avec Vim taper

:%s/^M//g

Et voilà, vous ne devriez plus avoir de soucis 🙂

Accéder à l’ID Teamviewer Linux depuis Windows

J’ai eu dans la nécessite d’écrire un code script, il y a quelques jours, pour permettre à des utilisateurs d’accéder facilement à leur identifiant Teamviewer Linux depuis leur machines Windows (car depuis leur machine Linux ils ne peuvent accéder qu’a une interface limité).

Du coup, pour facilité la chose, j’ai uniquement mis en place un fichier bat sur leur bureau Windows qui permet en finalité d’ouvrir une fenêtre à l’écran avec leur ID.

Malheureusement pour faire cela, je me suis confronté à quelques soucis de droits. La solution à donc été de:

  • Créer un dossier partagé sous linux (samba) (voir mon article Samba : introduction rapide aux partage de fichier Linux/Windows)
  • Créer un script Linux qui récupère l’ID et qui le rentre dans un fichier .vbs
  • Créer un script sous windows qui monte le lecteur réseau, copie le vbs, le lance, et déconnecte le lecteur réseau.

Pourquoi faire une copie …malheureusement, avec la gestion des droits, impossible de lancer le script directement depuis un interpréteur de commande ou depuis un script (pourtant le côté graphique fonctionne parfaitement). Il ce trouve que je ne suis pas le seul à avoir ce problème et c’est la seule solution que j’ai (nous avons) trouvé.

Voici la solution mis en place …

Continuer la lecture

Explorateur de Fichier / accès rapide endommagé (Windows)

Cette année, il m’est arrivé deux fois de tomber sur un problème d’explorateur qui se ferme directement après ouverture. Après quelques tests, j’ai réalisé que le problème provenait en fait seulement de « l’accès rapide ». Redémarrage de l’explorer, de la machine et mise à jour Windows ne règle malheureusement pas le problème. Avant de réinitialiser le profil comme suggéré par l’un de mes collègues, vous pouvez essayer de réinitialiser l’accès rapide.

Pour réinitialiser les accès rapides sur l’explorateur de fichier, lancer votre fenêtre d’exécution et ouvrer une invite de commande (CMD)

Exécuter ensuite les lignes de commandes ci dessous dans votre fenêtre CMD

del /s /q "%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\*"
del /s /q "%AppData%\Microsoft\Windows\Recent\CustomDestinations\*"

Redémarrer votre ordinateur et le problème doit être réglé 🙂

L’ordinateur distant nécessite une authentification au niveau du réseau, qui n’est pas prise en charge par votre ordinateur

Le titre est assez long mais explique parfaitement le problème. Si vous souhaitez vous connecter à un serveur RDP (Terminal Serveur – TSE) et que le message suivant apparaît c’est que vous avez le même soucis que moi. Ce matin j’ai justement rencontré ce problème auquel j’avais déjà eu affaire il y a quelques mois en arrière. Sur le moment cela n’a pas été forcement facile de (re)trouvé comment régler le problème.

Il y a en fait plusieurs possibilités pour régler ce problème. Soit directement sur le serveur (malheureusement pas envisageable dans mon cas), soit en modifiant une clef registre sur la machine cliente.

Continuer la lecture

Msconfig

Quand on travaille sous le système d’exploitation Windows, il y a souvent quelques outils de bases à connaitre. Celui dont je vais vous parler aujourd’hui est très utile car il permet de consulter et de modifier la configuration du démarrage de Windows :MsConfig

Celui-ci est installer de base sous Windows et permet de supprimer des processus chargés au démarrage de Windows ou d’empêcher le démarrage de certains programmes lors du démarrage de Windows. Il peut aussi vous permettre de lancer un démarrage en mode diagnostique. Bref que du bonheur.

Comment démarrer MsConfig ?

Continuer la lecture

Ajouter un droit utilisateur sur le dossier des polices d’écriture (Windows)

Il y a quelques jours j’ai vu passer un ticket de demande de support informatique concernant une demande du service communication de mon entreprise. Celui-ci demandé s’il été possible d’attribuer les droits d’écriture sur le dossier des polices d’écriture, afin, de pouvoir ajouter des polices supplémentaires pour les affiches.

Malheureusement, aller dans les paramètres du dossier pour modifier les droits d’accès ne marche pas. Le menu sécurité n’apparaît pas dans les paramètre de ce dossier.

Voici donc comment faire pour ajouter les droits d’écriture sur ce dossier sans être obligé de donner les droits d’accès administrateur à l’utilisateur.

Continuer la lecture

Déployer une écran d’accueil personnalisé (Windows 8 / 8.1 / 10)

Dans le cadre du travail il peut être intéressant de pouvoir pousser une interface d’accueil (anciennement appelé Metro) personnalisé sur notre machine sous windows 8/8.1/10.

Pour ce faire nous allons commencer par configurer le menu comme nous le souhaitons sur un poste de référence, puis utiliser powershell afin d’exporter au format XML ce menu. Nous utiliserons ensuite deux méthode afin d’importer ce menu.
Cette méthode s’applique sur le profil par défaut, de ce fait il s’applique aux nouveaux utilisateurs uniquement.

Continuer la lecture

Problème avec le service Windows Update

Il y a quelques jours, je me suis trouvé face à l’impossibilité d’effectuer des mise à jours Windows.

J’avais un message d’erreur qui m’informer de l’arrêt du service windows update et de la nécessité de redémarrer mon ordinateur. Après vérification dans « services.msc » je me rend compte que celui-ci est bien lancé, et, malgré un redémarrage de la machine le problème est toujours présent.

Du coup impossible de faire mes mise à jour sur cette machine fraîchement réinstallé à partir d’une image qu’y avait été faite quelques temps plus tôt.

Voici donc comment résoudre ce problème.

Tout d’abord, arrêter le service Windows update. Pour cela je passe par la console

net stop wuauserv

Maintenant je m’occupe de renommer le dossier SoftwareDistribution qui est l’endroit ou est stocker toutes les mise à jour automatique. Je le renomme en .old

ren %windir%\SoftwareDistribution SoftwareDistribution.old

Une fois cette opération effectué, relançons notre service windows update. cela va recréer proprement le dossier SoftwareDistribution.

net start wuauserv

Puis il suffit de retourner dans windows update et de lancer la recherche de mise à jour.

Tout doit alors entrer dans l’ordre 🙂 .

 

Edit : Une fois que vous êtes certain que la solution fonctionne parfaitement, rendez vous dans le dossier Windows (en général : C:\Windows) et supprimer le dossier SoftwareDistribution.old qui prend de la place inutile

Activer le client Telnet « Natif » sous windows

Dans mon métier je suis souvent amené à devoir me connecter en Telnet sur certains équipements réseau. Mais voila, depuis windows Vista, le client Telnet n’est « plus présent », en tout cas celui-ci n’est plus activé de base dans votre cmd.

telnet_natif_1

Afin de remédier à cela il suffit d’avoir les droits d’administration sur son ordinateur, et d’aller dans le panneau de configuration puis Programmes et fonctionnalités. Enfin cliquer sur « Activer ou désactiver des fonctionnalités Windows ».

telnet_natif_2

Une nouvelle fenêtre s’ouvre. Cocher la case « Client Telnet » puis valider.

telnet_natif_3

Après quelques seconde et une barre de chargement, la fonctionnalité est activé. Vous n’avez plus qu’à ouvrir à nouveau votre console cmd et à exécuter votre commande telnet.

telnet <votre_adresse>

Vous devez alors accéder à votre matériel sans problème 🙂 .

Forcer l’activation au démarrage du pavé numérique

Dans mon travail je suis amené  à mettre en place des nouveaux postes pour mes collègues/étudiants, et souvent il arrive que certaines personnes n’arrive pas à se connecter correctement à cause d’un « simple » problème de pavé numérique désactivé au démarrage, ou qu’après démarrage ils soient obligés de réactiver à nouveau le pavé numérique. Ce qui est assez frustrant.

Du coup il existe une solution qui fait appel aux clefs de registre afin de forcer l’activation du pavé numérique au démarrage (avant l’ouverture de la session utilisateur) mais aussi après l’ouverture de session.

Les clefs à changer pour définir le comportement de la touche:

Avant l’ouverture de session

[HKEY_USERS\.DEFAULT\Control Panel\Keyboard]
"InitialKeyboardIndicators"="2"

Lors de l’ouverture de session
[HKEY_CURRENT_USER\Control Panel\Keyboard]
"InitialKeyboardIndicators"="2"

En fait cette technique permet d’activer le pavé numérique mais aussi le CapsLock (verrouillage majuscule) et la touche ScrollLock (arrêt défilement). Il suffit pour cela de mettre une valeur différente de 2. Les valeurs possibles sont référencées ci-dessous.

Valeurs possible pour InitialKeyboardIndicators:

0 – Toutes les touches sont désactivées (NumLock, CapsLock, ScrollLock)
1 – Allume CapsLock
2 – Allume NumLock
3 – Allume CapsLock et NumLock
4 – Allume ScrollLock
5 – Allume CapsLock et ScrollLock
6 – Allume NumLock et ScrollLock
7 – Allume toutes les touches (NumLock, CapsLock, ScrollLock)