Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:linbo-remote]] 

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

STRG+A D

wieder aus einer Session heraus (Detached) und landet automatisch wieder im Hauptmenu!

#!/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
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.
 [[anwenderwiki:linbo-remote]] anwenderwiki/linbo-remote.txt · Zuletzt geändert: 2015/02/14 19:11 (Externe Bearbeitung)