Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

Tag - variable d environnement

Fil des billets - Fil des commentaires

vendredi 29 décembre 2017

Choisir l'editeur pour éditer le crontab utilisateur

Sous Linux, le crontab utilisateur se modifie par la commande:

crontab -e

S'ouvre alors l'éditeur du système avec les définitions actuelles du crontab. Par défaut, cet éditeur est vi ou nano mais on peut modifier ce comportement en positionnant la variable EDITOR ou VISUAL.

Si la variable VISUALest positionnée, sa valeur est prise en compte, sinon la commande crontab utilise la valeur de la variable EDITOR.

Pour ce convaincre de ce fonctionnement sans altérer son système, on pourra tester la commande suivante:

EDITOR=vi crontab -e

qui lancera alors vi pour modifier le crontab sans pour autant modifier la variable d'environnement EDITOR du système.

La commande:

VISUAL=vi crontab -e

produirait elle aussi le même résultat.

En revanche:

EDITOR=vi VISUAL=nano crontab -e

lancera alors nano puisque la variable VISUAL est prioritaire sur EDITOR.

Enfin, n'essayez pas de positionner l'une des variables précédentes vers l'éditeur Sublime Text, car curieusement cela ne fonctionne pas !

dimanche 19 mars 2017

Transmettre une variable d'environnement à une connexion ssh

J'ai besoin pour faire des tests de connaitre l'adresse IP de l'hôte qui héberge une machine virtuelle.

Comme je me connecte à cette machine virtuelle par ssh, je vais lui transmettre cette adresse IP via une variable d'environnement.

Pour cela, j'ai besoin de spécifier le nom de la variable d'environnement coté hôte. On l'appelera HOST_IP.

Cela peut se faire de deux façons:

Dans le fichier /etc/ssh/ssh_config via la directive:

SendEnv HOST_IP

En fait on changera la ligne existante:

SendEnv LANG LC_*

en

SendEnv LANG LC_* HOST_IP

On peut aussi spécifier le nom de la variable sur la ligne de commande ssh:

ssh -o SendEnv=HOST_IP user@machine...

Pour que cela fonctionne, il faut maintenant que la machine virtuelle accepte cette variable d'environnement.

Pour cela on changera dans le fichier /etc/ssh/sshd_config de la VM la ligne:

AcceptEnv LANG LC_*

en

AcceptEnv LANG LC_* HOST_IP

Et on redémarre le serveur ssh.

mardi 8 avril 2014

bash: positionner une variable d'environnement pour un seul appel de commande

Vous connaissez probablement la syntaxe de bash qui permet d'éxécuter une commande si la commande précédente a réussie:

command1 && command2

ou celle qui permet d'éxécuter une commande en cas d'échec d'une première commande:

command1 || command2

En Shell on peut aussi lancer deux commandes successivement et ce indépendamment du code retour de la première commande:

command1; command2

Mais connaissez-vous la syntaxe suivante de bash:

TZ="Europe/London" date

Cette syntaxe particulière positionne la variable d'environnement TZ à la valeur "Europe/London" et exécute ensuite la commande date avec cette variable d'environnement positionnée. Cela a évidemment l'effet d'afficher la date qu'il est à Londres.

On aurait pu aussi procéder comme ceci:

export TZ="Europe/London" && date

Mais dans ce cas l'export fait que la variable d'environnement TZ "persiste" dans le Shell courant. Ce qui fait que l'heure affichée désormais dans ce terminal sera celle de Londres !

Alors qu'avec la première syntaxe, la variable TZ n'est positionnée que pour la commande qui suit ; la commande date.

Moralité, la syntaxe:

TZ="<Timezone>" date

permet d'obtenir la date dans un autre fuseau horaire que le notre sans changer pour autant notre fuseau horaire.

Enfin, précisons pour finir que la commande date regorge de facilités pour convertir une date en une autre et que la lecture de sa man page est tout a fait recommandée.