Automatisierung via Netzwerk funktioniert nicht richtig

Romulus1689

Romulus1689

Foren As
Hey Leute,
Habe da ein Problem das ich einfach nicht verstehe und wo ich auch nicht weis wonach ich suchen soll, folgender Code:
Code:
#!/bin/bash
# Neustart auf allen Rechnern planen

HOSTS="host1 host2 host3"
DOMAIN=".myhome.local"

for HOST in $HOSTS ; do
  echo "Plane neustart für $HOST:"
  sshpass -p "PASSWORD" ssh -o StrictHostKeyChecking=no admin@$HOST$DOMAIN 'echo PASSWORD | sudo -S bash -c "/usr/bin/nohup /sbin/shutdown -r 03:00 & 2>/dev/null"'
  echo "Neustart eingeplant!"
done

Das Skript soll für alle Rechner die in der Variable HOSTS angegeben sind einen Neustart für 3h nachts einplanen, ohne dass ich ein Passwort auf den Rechnern eingeben muss.

Das Problem ist, wenn ich das Skript ausführe, bleibt es immer nach dem ersten Host "hängen", es passiert danach einfach nichtsmehr, als ob er auf eine Eingabe warten würde. aber alles ENTER drücken und sonstwas bingt nichts, da kann man nur noch mit ctrl-c abbrechen. Der Fehler schein irgendwo beim Befehl der ausgeführt wird selbst zu liegen, da folgendes Skript problemlos funktioniert:

Code:
#!/bin/bash
# Updates auf allen Server durchfuehren

HOSTS="host1 host2 host3"
DOMAIN=".myhome.local"

for HOST in $HOSTS ; do
  echo "Update Host $HOST:"
  sshpass -p "PASSWORD" ssh -o StrictHostKeyChecking=no admin@$HOST$DOMAIN 'echo PASSWORD | sudo -S bash -c "apt-get -y update && apt-get -y upgrade"'
done

Hat da jemand eine Ahnung oder einen Ansatz woran das liegen könnte??

Vlg
Romulus1689
 
Gibt's einen Grund dafür, daß Du nicht auf jedem Host
- sudo so konfigurierst, daß es den shutdown-Befehl ohne PW ausführen darf
- dich per PublicKey ohne PW direkt per ssh anmeldes?

... dann würde sich das Problem vermutlich in Wohlgefallen auflösen,
 
Ja, weil ich diese umkonfiguration dann auf jedem Host machen müsste ;-)
Habe allerdings nach ewigem rumprobieren den Fehler gefunden, ich musste nur STDOUT nach /dev/null und STDERR nach STDOUT umleiten dann hats geklappt. Ich nehme mal an das liegt daran, dass nach dem Shutdown Befehl direkt die Ausgabe mit der verbleibenden Zeit angezeigt wird oder so. Könnte natürlich auch was mit nohup zu tun haben.. ihc weis es also nicht ganz genau, jedenfalls funktionierts mit dieser Befehlszeile:
Code:
sshpass -p "PASSWORD" ssh -o StrictHostKeyChecking=no admin@$HOST$DOMAIN 'echo PASSWORD | sudo -S bash -c "/usr/bin/nohup /sbin/shutdown -r 03:00 > /dev/null 2>&1 &"'

Ich hatte zuvor die umleitungen immer hinter dem "&".
 
Über die Tatsache, daß man das Passwort dann in der Prozessliste des aufrufenden Hosts auslesen kann bist Du dir bewusst?

Die grundelegenden Rechte für solche Späße, gerade wenn man eine größere Anzahl von Rechnern damit verbasteln will macht man besser über ssh-Keys und entsprechende sudo-Konfigurationen, das ist sicherer, einfacher und wenn man sich 1x 10 Minuten hinsetzt in die automatische Installetion jeden Hosts integriert.

Alternativ gibt's jede Menge fertige Tools, die zum parallelen Administrieren größerer Rechnerzahlen geeignet sind.
 

Ähnliche Themen

script sshpass

Verschlüsseltes Backup-Script mit rsync

Zugriff auf Samba Fileserver Freigaben verweigert(Samba 4 Active Directory Domäne)

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben