Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/03/2016, à 08:41

gotcha5832

Personnliser le terminal en fonction de la session ssh

Bonjour à tous.

Ayant un serveur de test + un serveur de prod j'ai tres souvent un terminal ouvert avec 3 onglet
- 1 pour le local
- 1 pour la connesion ssh vers le serveur de test
-  1 pour la connesion ssh vers le serveur de prod


Afin de diminuer les risques de faire une erreur en lancant la mauvaise commande sur le mauvais serveur, j'aimerai personnaliser l'affichage en fonction de la connexion.
Genre un fond bleu sur le serveur de test, rouge sur le serveur de prod.

J'ai beau chercher je ne trouve pas comment faire.
Pourriez vous me donner un coup de main?

Merci

Hors ligne

#2 Le 06/03/2016, à 08:55

MicP

Re : Personnliser le terminal en fonction de la session ssh

Changer la couleur de fond de l'écran serait intéressant, mais on risque de ne plus pouvoir voir certains retours de commandes.

C'est pourquoi je ne modifie que la couleur du prompt de mes machines.

Tu peux tester directement ce que ça pourrait donner en lançant (par copié-collé) cette suite de ligne de commandes dans une fenêtre de terminal :

sauvPS1=$PS1
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;33m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;34m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;36m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;37m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;1;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;1;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;1;33m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;1;34m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;1;35m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;1;36m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1='${debian_chroot:+($debian_chroot)}\[\033[07;1;37m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
PS1=$sauvPS1

Une fois que tu as trouvé la couleur qui te convient, tu peux modifier le ~/.bashrc du compte sur lequel tu te connecte en conséquence.

Dernière modification par MicP (Le 06/03/2016, à 09:20)

Hors ligne

#3 Le 06/03/2016, à 09:16

gotcha5832

Re : Personnliser le terminal en fonction de la session ssh

Je te remercie j'ai donc essayé de mettre dans bashrc:

if  [ $HOSTNAME = "prod" ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[07;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '; # noir sur fond vert
elif [ $HOSTNAME = "test" ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[07;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '  # noir sur fond rouge
else
    if [ "$color_prompt" = yes ]; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    fi
if

Mais j'ai le message d'erreur:

.bashrc: ligne 122: Erreur de syntaxe : fin de fichier prématurée

Hors ligne

#4 Le 06/03/2016, à 09:23

MicP

Re : Personnliser le terminal en fonction de la session ssh

Dans la dernière ligne, remplace if par fi
(comme je n'ai qu'un extrait avec des lignes non numérotées , je suppose que l'erreur vient de là)

Dernière modification par MicP (Le 06/03/2016, à 09:31)

Hors ligne

#5 Le 06/03/2016, à 09:29

gotcha5832

Re : Personnliser le terminal en fonction de la session ssh

voici la syntaxe

if [ "$HOSTNAME" = prod ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[07;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' # noir sur fond vert
elif [ "$HOSTNAME" = test ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[07;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '  # noir sur fond rouge
else
    if [ "$color_prompt" = yes ]; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
    else
        PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    fi
fi

Mais sauf erreur de ma part ca sert à rien.
Car il utilisera le bashrc distant et non le local?!

Il n'y a pas moyen de modifier cela?

Hors ligne

#6 Le 06/03/2016, à 09:33

MicP

Re : Personnliser le terminal en fonction de la session ssh

C'est bien sûr la variable d'environnement du compte utilisateur auquel tu te connecte sur la machine à laquelle tu te connecte qu'il faut modifier.

Hors ligne

#7 Le 06/03/2016, à 09:45

gotcha5832

Re : Personnliser le terminal en fonction de la session ssh

je te remercie j'ai donc essayé de modifier les fichier bashrc distant

sudo echo "PS1='${debian_chroot:+($debian_chroot)}\[\033[07;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '" >> ~/.bashrc

mais il ne prend pas en compte l'affichqge coloré?

Hors ligne

#8 Le 06/03/2016, à 10:21

MicP

Re : Personnliser le terminal en fonction de la session ssh

Après cette modification, il te faut te déconnecter et te reconnecter pour que le fichier .bashrc soit exécuté en tenant compte de la modification.

Sinon, il est possible de le lancer aussi une fois la session ouverte, mais ça risque de faire des problèmes car ce fichier est prévu pour n'être exécuté qu'au moment de l'ouverture de session

Dernière modification par MicP (Le 06/03/2016, à 10:22)

Hors ligne

#9 Le 07/03/2016, à 07:31

gotcha5832

Re : Personnliser le terminal en fonction de la session ssh

je te remercie, mais j'ai bien déconnecté et reconnecté... et identique

Hors ligne

#10 Le 07/03/2016, à 08:35

MicP

Re : Personnliser le terminal en fonction de la session ssh

Bonjour

Je présume que ce changement de couleur fonctionne sur ta machine, mais pas quand tu es connecté au serveur ssh. Ais-je bien compris ?

Transmet nous un copié/collé du contenu du fichier ~/.bashrc du compte sur le serveur ssh quand tu es connecté par ssh.

Merci.

Hors ligne

#11 Le 08/03/2016, à 07:41

gotcha5832

Re : Personnliser le terminal en fonction de la session ssh

c'est ce que je pense, mais le serveur n'a pas d'écran je ne peux donc pas vérifier

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
	# We have color support; assume it's compliant with Ecma-48
	# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
	# a case would tend to support setf rather than setaf.)
	color_prompt=yes
    else
	color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
#PS1='\[\033[07;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$ '

Hors ligne

#12 Le 08/03/2016, à 11:02

MicP

Re : Personnliser le terminal en fonction de la session ssh

Quand tu transmets un retour de commande, s'il n' y a ni le prompt de départ ni le prompt de retour de commande,
comment puis-je savoir depuis quel compte et sur quelle machine ces commandes ont été entrées ?

Par exemple, dans le retour de commande ci-dessous, comme j'ai inclus les prompts dans mon copié/colle,
on peut constater que j'utilisais le compte utilisateur ubuntu de la machine ubuntu,
et que je me suis connecté au compte michel sur la machine debg53sw

ubuntu@ubuntu:~$ ssh -l michel 192.168.122.1
michel@192.168.122.1's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have new mail.
Last login: Tue Mar  8 10:44:00 2016 from 192.168.122.142
michel@debg53sw:~$ 

=======

mais le serveur n'a pas d'écran je ne peux donc pas vérifier

Pourrais-tu reformuler cette phrase et me préciser ce que tu ne peux pas vérifier ?

Dernière modification par MicP (Le 08/03/2016, à 11:03)

Hors ligne

#13 Le 08/03/2016, à 20:33

gotcha5832

Re : Personnliser le terminal en fonction de la session ssh

gotcha@prbook:~$ ssh gotcha@11.11.225.99
gotcha@11.11.225.99's password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 3.19.0-51-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  System information as of Tue Mar  8 20:02:36 CET 2016

  System load:  0.0                 Processes:           132
  Usage of /:   47.9% of 131.52GB   Users logged in:     0
  Memory usage: 32%                 IP address for p3p1: 192.168.1.115
  Swap usage:   0%

  Graph this data and manage this system at:
    https://landscape.canonical.com/

Last login: Tue Mar  8 20:02:36 2016 from box
gotcha@samsung400b:~$ 

=================
sinon par

mais le serveur n'a pas d'écran je ne peux donc pas vérifier

je répondait à ta question

Je présume que ce changement de couleur fonctionne sur ta machine, mais pas quand tu es connecté au serveur ssh. Ais-je bien compris ?

Dans le sens ou le serveur n ayant pas d'écran connecté je ne peux me connecter que via ssh

Dernière modification par gotcha5832 (Le 08/03/2016, à 20:34)

Hors ligne

#14 Le 11/03/2016, à 07:25

gotcha5832

Re : Personnliser le terminal en fonction de la session ssh

aucune idée?

Hors ligne