Come posso cambiare il colore dell'hardstatus dello schermo in base all'utente che ha effettuato l'accesso?


8

Non ho modificato / creato un file .screenrc da un po ', ma questo è quello che sto attualmente usando:

# Turn off the screen startup message
startup_message off

# Define format of bottom navigation/status/date/etc. line
hardstatus alwayslastline "%{yk}[ %H ] %-Lw%50>%{gk}(%{-}%n-%t%{gk})%{-}%+Lw%< %=%{yk}[ %c %d.%m.%Y ]"

# Increase scrollback buffer to 30000 lines
defscrollback 30000

Onestamente non ricordo cosa rappresenta tutto nella mia linea di hardstatus, ma voglio capire come potrei cambiare il colore del nome host in base all'utente che ha effettuato l'accesso. È possibile? In questo momento, il nome host è giallo quando eseguo l'accesso con qualsiasi utente; ma voglio che sia rosso se sono root. È qualcosa che può essere modificato nel mio file .bashrc? Ho questo nel mio .bashrc per cambiare i nomi delle nuove finestre dello schermo con il nome host del server a cui sono connesso:

# Set screen window title
case "$TERM" in
screen)
  PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
  ;;
esac

Grazie per qualsiasi aiuto!

MODIFICARE

Ho provato ad aggiungere questo al mio file .bashrc, ma mette semplicemente il codice ANSI davanti al nome host nel mio schermo hardstatus:

case "$TERM" in
screen)
  if (( $UID == 0 )); then
    PROMPT_COMMAND='echo -ne "\033k$FRED$HOSTNAME$RS\033\\"'
  else
    PROMPT_COMMAND='echo -ne "\033k$HOSTNAME\033\\"'
  fi
  ;;
esac

MODIFICA 2

Ho anche aggiunto gli attuali codici colore ANSI (ex:) \[\033[31m\]e i codici di escape dello schermo (ex %kr:) all'istruzione precedente nel mio .bashrc, ma nessuno dei due ha funzionato.

MODIFICA 3

Se lo uso come riga di comando del prompt, il nome host appare in rosso davanti alla mia PS1:

PROMPT_COMMAND='echo -ne "\033[31m$HOSTNAME\033\\"'

Se utilizzo il seguente prompt, il nome della finestra cambia in hostname (YES!); ma il colore rimane il valore predefinito (NO!):

PROMPT_COMMAND='echo -ne "\033[31m\033k$HOSTNAME\033\\"'

Ho anche provato a sostituire \033[31m(e semplicemente [31m) con la fuga dei colori dello schermo (% kr), ma neanche quello ha funzionato.


Vuoi colorarlo in base all'utente con cui hai effettuato l'accesso se un determinato utente è connesso al sistema?
slm

Sì. Voglio farlo in modo che il nome host del server diventi rosso quando accedo a quel server come root. Ad esempio, nel mio file .bashrc, ho una riga che cambia la mia PS1 in tutto il testo rosso quando eseguo l'accesso come root. Voglio emulare questo comportamento con i nomi host sullo schermo.
EG,

Risposte:


1

Dai un'occhiata a queste domande e risposte.

Nello specifico questa risposta, https://unix.stackexchange.com/a/16433/7453 .

L'idea generale è che si mantengono 2 screenrcfile diversi con i colori e in base al proprio $USERnel bashrcfile si punta la variabile di ambiente SCREENRCa quella per un determinato utente.


Darò un'occhiata. L'unica domanda che ho a riguardo è: entrambi i .screenrcfile funzioneranno contemporaneamente? Ad esempio, se apro lo schermo come me stesso sudo -sper eseguire il root su un altro computer all'interno di quella sessione dello schermo, le mie altre finestre dello schermo rimarranno gialle e il nome (nome host) della finestra diverrò radice a sua volta rosso?
EG,

Non so se sia possibile, forse lo è, ma è ancora un po 'fuori dall'ordinario, voglio dire, se sei all'interno della stessa sessione dello schermo, funzionerà usando lo stesso .screenrc. Con due istanze separate dello schermo, sarebbe semplicemente semplice farlo, solo due configurazioni separate.
njsg,

Questo è quello che ho assunto, continuerò a cercare e ad aggiornare il thread se trovo una soluzione (o se qualcun altro ne ha una). Grazie per l'aiuto!
EG,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.