2017-06-20 2 views
0

Ich bin ein Anfänger in der Entwicklung von scripts.I 4 Aufgaben in einem Skript zu tun: 1. Schließen Sie an der Maschine 1 durch ssh 2.Retrieve die Daten und es in einer CSV-Datei setzen 3 .send die CSV in ein Verzeichnis 4.Connect zu Maschine 2 durch ssh-Datei und tun Schritt 2 und 3Script mit Bedingung

Fisrt Test:

#!/bin/bash 
#Settings 
DATE=$(date +%Y_%m_%d) 
DATE1=$(date +%d/%m/%Y) 
HIER=$(date -d '1 day ago' "+%Y-%m-%d") 
HEURE=$(date +"%T") 
#Ip adress of the machine 
machine1= IP1 
machine2= IP2 

#Connexion SSH OLT1 
ssh [email protected] 

#Command for geting data on machine 
enable 
config 
display XXXX > IP1.csv 

#exit connection 
exit 

ich habe keine Folge, so denke ich mache ich eine Schleife zum Ausführen der Aufgabe für die 2 Maschinen?

Dank

Ich versuche erwarten tu verwenden, weil ich durch die Verwendung von SSH und Shell-Skript-RSA-Schlüssel Problem finden

#spawn ssh $host -l $user 
expect "login:" 
send "root\r" 

expect "passe:" 
send "test\r" 

expect -re $prompt 
send "terminal length 0\r" 

expect -re $prompt 
send "enable\r" 

expect -re $prompt 
send "config\r" 

expect -re $prompt 
send "display .....\r" 

expect -re "\r\nend\r\n" 
send "exit\r" 

Ich weiß nicht, wie ich auf CSV-Datei das Ergebnis setzen können ein Verzeichnis? Außerdem kann ich setzte die IP auf #spawn diese Aufgabe auf zwei Maschinen durchgeführt werden sollte davon ausgehen,

Dank für Ihr Feedback

ich Ihre Probe versuchen thisaccording aber die ouput Datei ist leer: #/usr/bin/erwarten

spawn ssh X.X.X.X -l root 

expect "User password:" 
send "admin\n" 
expect -re "device>" 
send "enable\r" 
expect -re "device#" 
send "config\r" 

expect -re "device(config)#" 
send "display .......\r" 
expect -re "{ <cr>||<K> }:" 
send "\r" 
set date [timestamp -format %C%y%m%d] 
log_file -noappend /home/device/CSTtest.csv 
+2

Es gibt ein größeres Problem. 'enable' wird nicht ausgeführt, bis' ssh' beendet wurde. Da dies geschrieben ist, ist es etwas, das * nach * 'ssh' läuft, nicht etwas *, das an *' ssh' gesendet wird. –

+1

btw, 'machine1 = IP1' führt einen Befehl namens' IP1' mit der Umgebungsvariable 'machine1' auf einen leeren Wert; es ist * keine * Zuweisung, aufgrund des Platzes. Dies ist ein Problem, das http://shellcheck.net/ automatisch für Sie identifizieren würde. –

+0

Googeln 'site: stackoverflow.com Skript cisco ios bash ssh' könnte der beste Ort sein, um hier anzufangen. –

Antwort

1

Sie können Ihren Befehl und Export aus Datei in demselben ssh Aufruf wie folgt auszuführen:

# ... 
# first machine command 
ssh [email protected] "<COMMAND>" > /PATH_LOCAL_TO_SAVE_FILE/IP1.csv 

# second machine command 
ssh [email protected] "<COMMAND>" > /PATH_LOCAL_TO_SAVE_FILE/IP2.csv 
+0

danke @Igor Uchôa, aber die Datei ist leer..the "Display-Befehl" wird nicht ausgeführt. – lalarita

+0

Was möchten Sie mit dem Display-Befehl machen? Wenn es dieselbe Anzeige ist, die zum Anzeigen von Bildern in Linux verwendet wird, stellen Sie sicher, dass der Anzeigebefehl auf Ihrem Remote-Computer installiert oder aktiv ist. Wenn Sie nur Textdaten abrufen möchten, können Sie einen Textviewer (z. B. den Befehl "less") verwenden. –

+0

, ja "Anzeige Befehl ist aktiviert und funktioniert" in remote machine.Ich versuche, eine Verbindung mit der Maschine, lesen Sie dat und speichern Sie das Ergebnis in einer Datei.Und schließlich mit crontrab, führen Sie das Skript einmal pro Tag – lalarita