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 🙂

Re-génération de la configuration de yunohost (mailman)

Suite à mise à jour d’une plateformes Yunohost (utilisée dans de nombreuses associations) j’ai eu un gros problème. Les configurations des envois sur les listes de diffusion gérer par Yunohost ne fonctionnaient plus.

Après une lecture des logs, je me suis aperçu que les e-mails ne s’envoyer plus à cause d’un problème de droits ….

Du coup, comme ce problème survient suite à une mise à jour, obligation de changer la configuration. Le mieux étant de simplement faire une re-génération de la config.
Néanmoins, en fonction des associations, mes configurations sont gérées de façon différente. Il est donc nécessaire de s’assurer avant toutes manipulations que je ne vais pas perdre des informations sur la modification du fichier.

Pour ce faire, je me connecte au serveur et j’utilise la commande suivante afin d’avoir un retour sur les ajouts (indiqué par un +) et les suppressions (indiqué par un -) par rapport au fichier conf de base :

yunohost service regen-conf --dry-run -d

Une fois les informations récupérées (si nécessaire), il suffit de taper la commande suivante pour re-générer le fichier de configuration :

yunohost service regen-conf 

Et voilà 😉
Dans mon cas ça me règle (en général) tous mes problèmes après une grosse mise à jour.

Vérification et amélioration des scripts shell

Il y a quelques jours je retweeter un article concernant un petit logiciel/outils nommée ShellCheck.

Ce n’est pas la première fois que j’en entendais parler, mais j’avoue que je ne l’avais pas encore testé. Ce qui est maintenant chose faite, et je dois dire que… hé ben c’est super 😀

Pour l’installer sur votre machine Gnu/Linux c’est plutôt simple. Voici comment faire sur une distribution Debian/Ubuntu :

Continuer la lecture

Script Installation automatique

Suite à mon article script d’installation automatique de teamviewer sous linux je me suis dit qu’il serait intéressant d’écrire un petit script afin de faire l’installation d’un pack de logiciels que je considère comme important.

Il ce trouve que j’installe très (très) régulièrement des machines pour des tests ou dans le cadre de mon engagement dans des GUL (groupe d’utilisateur de linux et de logiciels libre).

Voici donc le lien pour faire une auto installation des logiciels : Gitlab:Linux_AutoInstallPack.sh

[MAJ] Script d’installation automatique de Teamviewer sous linux

Il y a un mois environ, j’avais mis à disposition un Script d’installation automatique de Teamviewer sous linux que j’avais écris rapidement.

Petit article rapide pour vous informer que je viens de le mettre à jour. J’ai ajouté un test afin de savoir la version du système pour télécharger et installer la bonne version (32-64 bits).

Pour le récupérer : https://gitlab.com/christiansueur/Linux_AutoInstall_Teamviewer/blob/master/AutoInstallTM.sh

Script d’installation automatique de Teamviewer sous linux

Il y a quelques semaines, j’avais écrit un article concernant l’installation de Teamviewer sous Gnu linux.

J’avais assez rapidement écrit un script permettant de m’automatiser l’installation. Pourquoi le faire à la main si je peux le faire en automatique : D

Bon j’ai un peu fait mon bourrins (je balance un update et upgrade obligatoire mais bon …)

Si vous êtes intéressé par ce script, vous pouvais le télécharger sur mon accès gitlab public : https://gitlab.com/christiansueur/Linux_AutoInstall_Teamviewer/tree/master fichier nommé AutoInstallTM.sh

 

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

Modification mot de passe Teamviewer (Linux)

Petit article rapide suite à la publication de mon dernier tuto : installation-de-teamviewer-sous-gnu-linux.
J’indiquais dans l’article comment ajouter graphiquement un mot de passe. Il se trouve qu’il est possible de changer le mot de passe de Teamviewer via une ligne de commande (parfait pour un petit script ;p).

sudo teamviewer --passwd nouveau_mot_de_passe

Installation de teamviewer (sous GNU/Linux)

On ne va pas ce le cacher ! Même si je suis un grand utilisateur (et défenseur) des logiciels libres, il m’arrive d’utiliser des logiciels proprio. Ici je vais parler de Teamviewer.

Pour ceux qui ne connaissent pas Teamviewer, c’est un outils permettant de ce connecter à distance sur votre machine avec l’utilisation d’un identifiant et mot de passe (je vais pas entrer dans les détails, plus d’info sur le site officiel : https://teamviewer.com).

Si je vous parle de Teamviewer, c’est parce-que j’ai eu à l’installer dernièrement sur des machines Linux. Voici donc une petite procédure pour l’installer.

Continuer la lecture