Hallo. Wenn man einen Raum synchronisiert und _viele_ screen-Sessions per linbo-remote laufen hat, ist es wünschenswert, dass man zwischendurch mal kurz 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 ich schon immer umständlich fand!
Daher habe ich mich vorhin an die Aufgabe gemacht, ein passendes Script zu diesem Zweck zu schreiben. Da ich erst kürzlich auf den Befehl "dialog" gestoßen bin, wollte ich den unbedingt mal ausprobieren und herausgekommen ist ein Script, welches nun automatisch die laufenden screen-Sessions ausliest und ein "grafisches" Menu anbietet, um die entsprechende Session "zurückzuholen". Das ganze funktioniert bereits ganz gut; es liefert im Moment jedoch _auch_ die Sessions der laufenden Bittorrent-Screens mit an (was ich aber nicht so schlimm finde). Wer das ganze ausprobieren möchte: Ich habe es screen-manager.sh getauft (chmod +x nicht vergessen). Wie üblich kommt man mit STRG+A+D wieder aus der Session heraus (Detached) und landet automatisch wieder im Hauptmenu! Viel Spaß -- und hoffentlich viele Rückmeldungen :) Michael P.S.: Ich hoffe übrigens, dass in der eMail keine Zeilenumbrüche auftauchen, die da nicht hingehören? P.S.2: Ich wollte bereits die Seite im Wiki http://www.linuxmuster.net/wiki/dokumentation:handbuch:linbo:linbo.remote ergänzen; habe dort aber keine Schreibrechte. Kann das jemand mit den passenden Rechten übernehmen? ---------------------------------------------------------- #!/bin/bash # screen-manager.sh -- Version vom 13.02.2015 # 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.0 #Wieviele Sessions laufen? lines=$(screen -ls | grep -F Detached |awk -F\ '{print $1} ' |cut -d "." -f 1 |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); #Das "dialog"-Menu erwartet drei Optionen; die letzte davon lautet "off" für alle Menueintraege! 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.$$` #Menu erzeugen: main_menu() { dialog --backtitle "Screen-Session-Manager $VER" \ --radiolist "Welche Session soll beobachtet werden?" 20 40 15 ${OPTIONS} 2>/tmp/ans.$$ opt=${?} if [ $opt != 0 ]; then echo "Ende!"; exit 0; fi #Auswahl merken: result=`cat /tmp/ans.$$` if [ $result ] then screen -r $result else echo "Keine Auswahl getroffen! Nochmal..."; fi # clean up rm -f /tmp/names.$$ rm -f /tmp/options.$$ rm -f /tmp/ans.$$ } while true; do main_menu done #EOF ------------------------------------------------------------------------------- _______________________________________________ linuxmuster-user mailing list [email protected] https://mail.lehrerpost.de/mailman/listinfo/linuxmuster-user
