Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:linbo-remote]] 
no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


Letzte Überarbeitung
anwenderwiki:linbo-remote [2015/02/14 19:11] – angelegt - Externe Bearbeitung 127.0.0.1
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: 2023/02/26 21:51 von michael