Ну, учитывая, что это - полностью POSIX, совместимый, я сказал бы да.
Я вижу два способа сделать это, первый должен сделать .screenrc файл хостом.
Как .screenrc_serverA
, .screenrc_serverB
, ...
В Вашей оболочке сценарий запуска установил SCREENRC на что-то как .screenrc_`hostname`
Конечно, можно использовать исходную команду экрана для включения чего-то как .screenrc_default
в каждом пользовательском .screenrc _ … файлы так, чтобы они только содержали caption/hardstatus строку а не целую конфигурацию каждый раз.
Второй путь состоял бы в том, чтобы выполнить команды как screen -X hardstatus lastline ...
(использование, если тесты для выполнения команды с другим значением для... в зависимости от имени хоста) в оболочке запускают сценарий. То, когда Вы войдете в систему сервер, экранировать-X, ничего не сделает, потому что экран еще не будет запущен, но каждый раз, когда Вы открываете новые окна на экране, hardstatus будет обновлен.
Конечно, 1-е решение лучше, потому что второй обновит hardstatus строку каждый раз, когда Вы открыли новости окна, который, вероятно, бесполезен, поскольку имя хоста не будет изменяться.
@radius является пятном - на с вещью SCREENRC, но это не был очень полный ответ, таким образом, я разработаю …
# Strip down a FQDN
hostname="$(hostname | sed 's/\..*//')"
# Use the case pattern for server groups
case "$hostname" in
mario|luigi|toad|peach|koopa*|bowser) export SCREENRC=~/.screenrc_prod;;
dev*|vm*) export SCREENRC=~/.screenrc_dev;;
esac
# Use condensed bash "new test*" notation to override for specific servers
# e.g. ~/.screenrc_bowser would get used instead of ~/.screenrc_prod
[[ -f "~/.screenrc_$hostname" ]] && export SCREENRC="~/.screenrc_$hostname"
* Всегда используют новые тесты!
Надлежащий способ включать раскрашивает сценарии, с tput, не символами ESC. Ваши символы ESC характерны для Вашего терминала. Команда tput терминальная знающий. Я записал это для того, когда я должен стать необычным в своих сценариях:
GT_RESET=$( tput sgr0) # Reset all attributes
GT_BRIGHT=$( tput bold) # Set “bright” attribute
GT_DIM=$( tput dim) # Set “dim” attribute (normal/non-bright)
GT_ULINE=$( tput smul) # Set “underscore” (underlined text) attribute
GT_BLINK=$( tput blink) # Set “blink” attribute
GT_INVERSE=$( tput rev) # Set “inverse” attribute
GT_HIDDEN=$( tput invis) # Set “hidden” attribute
FG_BLACK=$( tput setaf 0) #foreground to color #0 - black
FG_RED=$( tput setaf 1) #foreground to color #1 - red
FG_GREEN=$( tput setaf 2) #foreground to color #2 - green
FG_YELLOW=$( tput setaf 3) #foreground to color #3 - yellow
FG_BLUE=$( tput setaf 4) #foreground to color #4 - blue
FG_MAGENTA=$( tput setaf 5) #foreground to color #5 - magenta
FG_CYAN=$( tput setaf 6) #foreground to color #6 - cyan
FG_WHITE=$( tput setaf 7) #foreground to color #7 - white
BG_BLACK=$( tput setab 0) #background to color #0 - black
BG_RED=$( tput setab 1) #background to color #1 - red
BG_GREEN=$( tput setab 2) #background to color #2 - green
BG_YELLOW=$( tput setab 3) #background to color #3 - yellow
BG_BLUE=$( tput setab 4) #background to color #4 - blue
BG_MAGENTA=$( tput setab 5) #background to color #5 - magenta
BG_CYAN=$( tput setab 6) #background to color #6 - cyan
BG_WHITE=$( tput setab 7) #background to color #7 - white
Я также сделал сценарий для демонстрации использования tput. Можно получить его от этой сути.
См.:
http://www.ibm.com/developerworks/aix/library/au-learningtput/?S_TACT=105AGY06
http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x405.html
setaf
используется, хотя это должно быть setab
(b вместо f) и второе это то использование 9
поскольку значение по умолчанию не работает на меня, возможно, потому что tput-версия не является стандартной (или в его случае или в моем, я просто не знаю, и это действительно не имеет значения очень), большое спасибо
– Shadow
14.08.2012, 11:30
Просто установите его в своем .screenrc как hardstatus переменная. Пока Вы используете переменную как %H для имени хоста, он изменится для соответствия любому имени хоста, Вы работаете над ним.
hardstatus alwayslastline "%{rk}%H %{gk}%c %{yk}%M%d %{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw%?"
Даст Вам строку состояния внизу, которая похожа
имя хоста является красным на черном, время является зеленым на черном, дата является желтой на черном. окно, отмеченное с *, является текущим окном, показанным в синем тексте на белом фоне. окно, отмеченное с - является ранее активным окном, показанным белый текст на черном цвете. окно 1, выше, не является ни один текущим, или предыдущим, и было бы отображено белым на черном цвете. другие возможности показали бы Вам других пользователей, присоединенных к окнам, белым на черном, и были бы отмечены +.
наличие отображения времени также помогает с содержанием alives, если Вы ssh к удаленным серверам для выполнения экрана, поскольку время, изменяясь каждую минуту будет поддерживать сессию, даже если оболочка неактивна на удаленной стороне.
Можно окрасить строку состояния из сценария обратной галочки путем печати \005{..r}
или подобный (r
для красного и т.д. точно так же, как в .screenrc
самостоятельно), таким образом, Вы могли или хешировать имя хоста, чтобы прибыть в число или просто иметь набор условных операторов для выбирания цвета. Как пример, вот сценарий, чтобы изменить цвет и распечатать имя хоста для использования в экране:
#!/bin/bash
Red="\005{..r}"
Yellow="\005{..y}"
Green="\005{..g}"
Blue="\005{..b}"
Magenta="\005{..m}"
Cyan="\005{..c}"
White="\005{..w}"
case "$HOSTNAME" in
lubuntu-eee)
echo -e "$Magenta$HOSTNAME"
;;
ubuntu-pc)
echo -e "$Magenta$HOSTNAME"
;;
*)
echo -e "$Green$HOSTNAME"
esac
Вы затем добавляете запись для этого сценария к .screenrc
и ссылка это в hardstatus или подписи как %4':
backtick 4 3600 3600 /usr/local/bin/screen_hostname
caption always "%{.kc}%D %d.%m.%Y %=%{.kg} %4` %{.kc}%0c"
Это предполагает, что имя хоста вряд ли изменится, следовательно тайм-аут и законность 1 часа (3 600 секунд); биты, окружающие вызов к самой обратной галочке просто, помещают дату в начале строки и время после имени хоста.
Можно даже использовать этот механизм для окраски вывода сценария в зависимости от значения уровня заряда батареи, системной нагрузки или температуры, предполагая, что у Вас есть доступ к соответствующим значениям из сценария оболочки.
hostname
". Я заставил проблему включать 'в сообщение – radius 30.06.2009, 03:08