From ec572315080690b9d7f1930fd175403aa004d8ab Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Sun, 26 May 2013 22:26:43 -0300 Subject: Adding system-wide screen session --- files/etc/rc.local | 5 ++ files/etc/screenrc | 137 -------------------------------- manifests/base.pp | 2 + manifests/subsystem/profile.pp | 8 -- manifests/subsystem/screen.pp | 9 +++ manifests/subsystem/screen/startup.pp | 12 +++ templates/screen/screenrc.erb | 145 ++++++++++++++++++++++++++++++++++ 7 files changed, 173 insertions(+), 145 deletions(-) delete mode 100644 files/etc/screenrc create mode 100644 manifests/subsystem/screen.pp create mode 100644 manifests/subsystem/screen/startup.pp create mode 100644 templates/screen/screenrc.erb diff --git a/files/etc/rc.local b/files/etc/rc.local index 4b8a41e..c9a8046 100644 --- a/files/etc/rc.local +++ b/files/etc/rc.local @@ -35,5 +35,10 @@ if [ -f '/etc/init.d/shorewall' ]; then /etc/init.d/shorewall restart fi +# Start system-wide screen session +if [ -f "/etc/screenrc.startup" ]; then + /usr/bin/screen -d -m -S root -f /etc/screenrc.startup +fi + # Then exit exit 0 diff --git a/files/etc/screenrc b/files/etc/screenrc deleted file mode 100644 index eb68114..0000000 --- a/files/etc/screenrc +++ /dev/null @@ -1,137 +0,0 @@ -# -# Global screenrc file -# - -# no annoying audible bell, please -vbell on - -# detach on hangup -autodetach on - -# don't display the copyright page -startup_message off - -# emulate .logout message -pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended." - -# advertise hardstatus support to $TERMCAP -# termcapinfo * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\' - -# make the shell in every window a login shell -#shell -$SHELL - -# autoaka testing -# shellaka '> |tcsh' -# shellaka '$ |sh' - -# set every new windows hardstatus line to somenthing descriptive -# defhstatus "screen: ^En (^Et)" - -defscrollback 1000 - -# don't kill window after the process died -# zombie "^[" - -################ -# -# xterm tweaks -# - -#xterm understands both im/ic and doesn't have a status line. -#Note: Do not specify im and ic in the real termcap/info file as -#some programs (e.g. vi) will not work anymore. -termcap xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l -terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l - -#80/132 column switching must be enabled for ^AW to work -#change init sequence to not switch width -termcapinfo xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l - -# Make the output buffer large for (fast) xterms. -termcapinfo xterm* OL=10000 - -# tell screen that xterm can switch to dark background and has function -# keys. -termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l' -termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~' -termcapinfo xterm 'kh=\E[1~:kI=\E[2~:kD=\E[3~:kH=\E[4~:kP=\E[H:kN=\E[6~' - -# special xterm hardstatus: use the window title. -termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007' - -#terminfo xterm 'vb=\E[?5h$<200/>\E[?5l' -termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l' - -# emulate part of the 'K' charset -termcapinfo xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337' - -# xterm-52 tweaks: -# - uses background color for delete operations -termcapinfo xterm ut - -################ -# -# wyse terminals -# - -#wyse-75-42 must have flow control (xo = "terminal uses xon/xoff") -#essential to have it here, as this is a slow terminal. -termcapinfo wy75-42 xo:hs@ - -# New termcap sequences for cursor application mode. -termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J - -################ -# -# other terminals -# - -#make hp700 termcap/info better -termcapinfo hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@' - -# Extend the vt100 description by some sequences. -termcap vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC -terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC - - -################ -# -# keybindings -# - -#remove some stupid / dangerous key bindings -bind k -bind ^k -bind . -bind ^\ -bind \\ -bind ^h -bind h -#make them better -bind 'K' kill -bind 'I' login on -bind 'O' login off -bind '}' history - -# Yet another hack: -# Prepend/append register [/] to the paste if ^a^] is pressed. -# This lets me have autoindent mode in vi. -register [ "\033:se noai\015a" -register ] "\033:se ai\015a" -bind ^] paste [.] - -################ -# -# default windows -# - -# screen -t local 0 -# screen -t mail 1 elm -# screen -t 40 2 rlogin faui40 - -# caption always "%3n %t%? @%u%?%? [%h]%?" -# hardstatus alwaysignore -# hardstatus alwayslastline "%w" - -# Green text, time, and date; windows in cyan: -hardstatus alwayslastline "%{=b}%{G} Screen(s): %{c}%w %=%{kG}%C%A %D, %M/%d/%Y " diff --git a/manifests/base.pp b/manifests/base.pp index 88af553..687619d 100644 --- a/manifests/base.pp +++ b/manifests/base.pp @@ -6,6 +6,8 @@ class nodo::base { include nodo::subsystem::sudo include nodo::subsystem::locales include nodo::subsystem::profile + include nodo::subsystem::screen + include nodo::subsystem::screen::startup include nodo::subsystem::apt include nodo::subsystem::backup include nodo::subsystem::mail diff --git a/manifests/subsystem/profile.pp b/manifests/subsystem/profile.pp index b90ac65..33ddc6a 100644 --- a/manifests/subsystem/profile.pp +++ b/manifests/subsystem/profile.pp @@ -1,13 +1,5 @@ # Custom configuration for user profiles class nodo::subsystem::profile { - file { "/etc/screenrc": - source => "puppet:///modules/nodo/etc/screenrc", - owner => "root", - group => "root", - mode => 0644, - ensure => present, - } - # As of squeeze, custom configuration can be placed directly at # /etc/profile.d, so in the future this file won't need to be # managed by puppet anymore. diff --git a/manifests/subsystem/screen.pp b/manifests/subsystem/screen.pp new file mode 100644 index 0000000..bcc2450 --- /dev/null +++ b/manifests/subsystem/screen.pp @@ -0,0 +1,9 @@ +class nodo::subsystem::screen { + file { "/etc/screenrc": + content => template('nodo/screen/screenrc.erb'), + owner => "root", + group => "root", + mode => 0644, + ensure => present, + } +} diff --git a/manifests/subsystem/screen/startup.pp b/manifests/subsystem/screen/startup.pp new file mode 100644 index 0000000..ffbec08 --- /dev/null +++ b/manifests/subsystem/screen/startup.pp @@ -0,0 +1,12 @@ +class nodo::subsytem::screen::startup( + $windows = hiera('nodo::subsystem::screen::startup::windows', [ "${::hostname} 0 tail -F /var/log/daemon.log" ]), + $select = hiera('nodo::subsystem::screen::startup::select', 0) +) { + file { "/etc/screenrc.startup": + content => template('nodo/screen/screenrc.erb'), + owner => "root", + group => "root", + mode => 0644, + ensure => present, + } +} diff --git a/templates/screen/screenrc.erb b/templates/screen/screenrc.erb new file mode 100644 index 0000000..722aabc --- /dev/null +++ b/templates/screen/screenrc.erb @@ -0,0 +1,145 @@ +# +# Global screenrc file +# + +# no annoying audible bell, please +vbell on + +# detach on hangup +autodetach on + +# don't display the copyright page +startup_message off + +# emulate .logout message +pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended." + +# advertise hardstatus support to $TERMCAP +# termcapinfo * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\' + +# make the shell in every window a login shell +#shell -$SHELL + +# autoaka testing +# shellaka '> |tcsh' +# shellaka '$ |sh' + +# set every new windows hardstatus line to somenthing descriptive +# defhstatus "screen: ^En (^Et)" + +defscrollback 1000 + +# don't kill window after the process died +# zombie "^[" + +################ +# +# xterm tweaks +# + +#xterm understands both im/ic and doesn't have a status line. +#Note: Do not specify im and ic in the real termcap/info file as +#some programs (e.g. vi) will not work anymore. +termcap xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l +terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l + +#80/132 column switching must be enabled for ^AW to work +#change init sequence to not switch width +termcapinfo xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l + +# Make the output buffer large for (fast) xterms. +termcapinfo xterm* OL=10000 + +# tell screen that xterm can switch to dark background and has function +# keys. +termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l' +termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~' +termcapinfo xterm 'kh=\E[1~:kI=\E[2~:kD=\E[3~:kH=\E[4~:kP=\E[H:kN=\E[6~' + +# special xterm hardstatus: use the window title. +termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007' + +#terminfo xterm 'vb=\E[?5h$<200/>\E[?5l' +termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l' + +# emulate part of the 'K' charset +termcapinfo xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337' + +# xterm-52 tweaks: +# - uses background color for delete operations +termcapinfo xterm ut + +################ +# +# wyse terminals +# + +#wyse-75-42 must have flow control (xo = "terminal uses xon/xoff") +#essential to have it here, as this is a slow terminal. +termcapinfo wy75-42 xo:hs@ + +# New termcap sequences for cursor application mode. +termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J + +################ +# +# other terminals +# + +#make hp700 termcap/info better +termcapinfo hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@' + +# Extend the vt100 description by some sequences. +termcap vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC +terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC + + +################ +# +# keybindings +# + +#remove some stupid / dangerous key bindings +bind k +bind ^k +bind . +bind ^\ +bind \\ +bind ^h +bind h +#make them better +bind 'K' kill +bind 'I' login on +bind 'O' login off +bind '}' history + +# Yet another hack: +# Prepend/append register [/] to the paste if ^a^] is pressed. +# This lets me have autoindent mode in vi. +register [ "\033:se noai\015a" +register ] "\033:se ai\015a" +bind ^] paste [.] + +################ +# +# default windows +# + +# screen -t local 0 +# screen -t mail 1 elm +# screen -t 40 2 rlogin faui40 +<%- if windows != '' then -%> +<% windows.each do |line| -%> +screen -t <%= line %> +<%- end -%> +<%- end -%> +<%- if select != '' then -%> +select <%= select %> +<%- end -%> + +# caption always "%3n %t%? @%u%?%? [%h]%?" +# hardstatus alwaysignore +# hardstatus alwayslastline "%w" + +# Green text, time, and date; windows in cyan: +hardstatus alwayslastline "%{=b}%{G} Screen(s): %{c}%w %=%{kG}%C%A %D, %M/%d/%Y " -- cgit v1.2.3