Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:linbo-remote]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

anwenderwiki:linbo-remote [2015/02/14 18:11] (aktuell)
Zeile 1: Zeile 1:
 +{{tag> linbo-remote screen sessions session überwachen script bash}}
 +
 +
 +
 +====== linbo-remote:​ Screens per Menü überwachen ======
 +
 +Wenn man einen Raum synchronisiert und **viele** screen-Sessions per
 +linbo-remote laufen, ist es wünschenswert,​ dass man zwischendurch
 +nachsehen kann, wie weit die Übertragungen im einzelnen bereits
 +fortgeschritten sind; oder auch einfach nur, was die Clients gerade tun
 +bzw. nicht tun. 
 +
 +Das musste man bisher mit "​screen -r <​PID>"​ machen, wobei man die <PID> per Hand eintippen musste, was bei vielen Sessions u.U. etwas umständlich sein kann.
 +
 +Dieses Script automatisiert diesen Prozess, indem es alle laufenden screen-Sessions ​
 +ausliest und ein "​grafisches"​ Menu mit Hilfe des "​dialog"​-Befehls anbietet, um die
 +entsprechende Session "​zurückzuholen"​.
 +In Moment werden jedoch //auch// die Sessions der laufenden Bittorrent-Screens mit angezeigt!
 +
 +Das Script nennt sich "​screen-manager.sh"​. Man kann es unter linuxmuster 6.x ausprobieren;​ es dürfte ​
 +aber auch unabhängig davon funktionieren (ungetestet).
 +
 +**Vorgehensweise:​** ​
 +  * Script herunterladen und unter dem Dateinamen //​screen-manager.sh//​ abspeichern
 +  * //chmod +x screen-manager.sh//​ (ausführbar machen) ​
 +  * //​./​screen-manager.sh//​ ausführen.
 +
 +Wie üblich kommt man mit <​code>​STRG+A D</​code>​ wieder aus einer Session heraus (Detached) und landet automatisch wieder im Hauptmenu!
 +
 +<​code>​
 +#!/bin/bash
 +
 +# screen-manager.sh
 +# Geeignet für linuxmuster 6.x
 +# von Michael Hagedorn
 +# nach einer Vorlage von
 +# http://​nixcraft.com/​showthread.php/​15048-Passing-menu-arguments-from-file-to-cdialog-xdialog
 +
 +VER=1.1
 +
 +# Wieviele Sessions laufen?
 +lines=$(screen -ls | grep -F Detached |wc -l);
 +# echo $lines;
 +for((j=1;​j<​$lines+1;​j++));​ do
 +  # Welche zugehörigen Namen der screens? (werden in Datei geschrieben)
 +   ​NAME=$(screen -ls | grep -F Detached |awk -F\  '​{print $1} ' |cut -d "​."​ -f 2 |head -n $j |tail -n 1);
 +  # Die Optionen für das "​dialog"​-Menu werden in eine Datei geschrieben ​
 +  # ("​off"​ bedeutet: Alle Menupunkte per default inaktiv)
 +   echo $NAME /off >>/​tmp/​names.$$
 +done
 +
 +i=1
 +while read line
 + do
 +  # Welche PIDs gehören zu den Namen? (werden ebenfalls in Datei geschrieben)
 +  PID=$(screen -ls | grep -F Detached |awk -F\  '​{print $1} ' |cut -d "​."​ -f 1 |head -n $i |tail -n 1);  ​
 +  echo $PID $line >>/​tmp/​options.$$
 +  i=`expr $i + 1`
 +  done </​tmp/​names.$$
 +  OPTIONS=`cat /​tmp/​options.$$`
 +
 + ​cleanup(){
 +    rm -f /​tmp/​names.$$
 +    rm -f /​tmp/​options.$$
 +    rm -f /tmp/ans.$$
 +   }
 +
 + # Hauptmenu erzeugen:
 + ​main_menu() {
 +  dialog --backtitle "​Screen-Session-Manager $VER" \
 +         ​--radiolist "​Welche Session soll beobachtet werden?"​ 20 40 15 ${OPTIONS} 2>/​tmp/​ans.$$
 +  # Abbruch-Bedingung:​
 +  opt=${?}
 +  if [ $opt != 0 ]; then echo "​Ende!";​ cleanup; exit 0; fi
 +  # Auswahl merken:
 +  result=`cat /​tmp/​ans.$$`
 +
 +  if [ $result ] 
 +     then
 +       ​screen -r $result
 +     else echo "Keine Auswahl getroffen! Nochmal...";​
 +  fi
 + ​cleanup;​
 + }
 +
 +while true; do
 +  main_menu
 +done
 +#EOF
 +</​code>​
 +
 +<note tip>
 +Das Script kann bei Bedarf sehr leicht abgewandelt und zu einem völlig anderen Zweck benutzt werden. Die entsprechenden Zeilen mit den //​screen//​-Anweisungen müssen nur entsprechend angepasst werden.
 +</​note>​
  
 [[anwenderwiki:linbo-remote]] anwenderwiki/linbo-remote.txt · Zuletzt geändert: 2015/02/14 18:11 (Externe Bearbeitung)