expect zur Geräteüberwachung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
hinnack93
Beiträge: 32
Registriert: 20.02.2007 20:09:23

expect zur Geräteüberwachung

Beitrag von hinnack93 » 06.04.2017 19:34:30

hallo leute,

brauche mal die hilfe von den spezialisten hier. Ich möchte aus vielen verschiedenen Linuxmaschinen mit expect daten herauziehen und anschliessend mit einen shellscript weiterverarbeiten. Bisher arbeite ich über ein shellscript, welches ein expectscript startet und die Ausgaben mit > in eine Datei schreibt welches das shellscript weiter verwendet. Das klappt soweit ganz gut allerdings ist es manchmal schwierig die benötigten werte herauszugreppen oder zu awk'en. Wird statt das > der expectbefehl puts verwendet, kommt oftmals noch grösserer blödsinn heraus. hier ein kurzes beispiel, das original ist einige kilobyte länger.

Code: Alles auswählen

spawn ssh $user@$host
    expect "password: "
    send $password\r
    expect "stefan*"
log_file -noappend test.txt
    send ls\r
    expect "stefan*"
log_file
puts [open test.txt w] "The output is $num '$expect_out(buffer)'."
        send -- "exit\r"
ergibt in test.txt

Code: Alles auswählen

ls
ESC[0mESC[01;32mwakeserverESC[0m
ESC]0;stefan@1234: ~^Gstefan@1234:~$
ich bräuchte aber nur das wakeserver zum weiterverarbeiten. Wäre schön wenn ihr irgendeine Idee habt.
Im oben genannten code habe ich jeweils log_file und puts einzeln probiert, kommt aber in beiden fällen dasselbe heraus.
unterschätze niemals die Macht dummer Menschen in grossen Gruppen

gbotti
Beiträge: 846
Registriert: 16.07.2010 14:24:43
Wohnort: München

Re: expect zur Geräteüberwachung

Beitrag von gbotti » 07.04.2017 15:15:17

Hallo.

Darf ich fragen warum du das so machst / machen möchtest? Ich verstehe den Sinn hinter der ganzen Aktion nicht, deswegen frag ich so doof.

In diesem Fall würde ich mit Public-Key-Authentication arbeiten, denn dann könntest du sowas hier machen:

Code: Alles auswählen

_MyLogFile="/tmp/MyLogFile.txt"
_CheckFiles=$(ssh s-backend1 ls *wakeserver*)
_WakeFileCount=$(echo "$_CheckFiles" | wc -l)
if [ "$_WakeFileCount" -gt 0 ]; then
     echo "Jupp, Datei existiert"
else
     echo "Nope, Datei existiert nicht"
fi
Georg
RTFM, LMGTFY, Orakel... Ach... Warum muss man suchen...
Schrödingers Backup --- "Der Zustand eines Backups ist unbekannt, solange man es nicht wiederherstellt" --- Quelle: Nixcraft

hinnack93
Beiträge: 32
Registriert: 20.02.2007 20:09:23

Re: expect zur Geräteüberwachung

Beitrag von hinnack93 » 07.04.2017 19:32:56

Hi,

na weil es sich erstens um über 700 maschinen handelt, die bedient werden müssen. Das würde bei jeden Controllertausch ein schlüssel zu hinterlegen bedeuten, da nur die Database im Backup ist. Zweitens müsste ich auf dem Server pssh zur bulk abfrage (15 werte pro maschine) installieren und das ist nicht erlaubt.

Ich werde das eventuell dahingehend ändern, mit expect auf jeder maschine eine datei mit den Werten zu erstellen und diese dann zu kopieren.
unterschätze niemals die Macht dummer Menschen in grossen Gruppen

Antworten