2016-07-21 15 views
0

Ich habe diesen Bash-Skript:Speicher Expected_output (Puffer) in eine Datei - Bash

#!/bin/bash 

read -p "Enter IP Address: " ip 
read -p "login: " user 
read -p "password: " password 

/usr/bin/expect<<EOF 
spawn telnet ${ip} 
expect "login" 
send "${user}\n" 
expect -re "password" 
send "${password}\n" 
expect ">" 
send "show system\r" 
expect ">" 
send "show interfaces 6/2 counters\r" 
expect ">" 
send "exit\r" 
expect ">" 
sleep 2 
exit 
EOF 

und ich versuche Wert durch Befehle "show system" und "show interfaces 6/2 Zähler" zurückgegeben sparen in einer Datei namens Logs.txt in meinem Home-Verzeichnis.

In bash verwende ich

echo "Date creation $(date)" >> ~/ls.txt 
echo >> ~/ls.txt 
echo "show system output" >> ~/ls.txt 
echo Hello >> ~/ls.txt 
echo >> ~/ls.txt 
echo "output" >> ~/ls.txt 
echo Hello2 >> ~/ls.txt 

Wie kann ich das gleiche in einem erwarten Skript zu tun?

Vielen Dank im Voraus.

Edit Ich muss zwei Ausgänge nicht überschreiben anhängen.

Antwort

1
set prompt "\r\n(.*?)>" 
spawn telnet ${ip} 
expect "login" 
send "${user}\r" 
expect -re "password" 
send "${password}\r" 
expect ">" 
send "show system\r" 
expect -re $prompt 
# Extracting the 1st substring 
lappend result expect_out(1,string); 
send "show interfaces 6/2 counters\r" 
expect -re $prompt 
# Extracting the 1st substring 
lappend result expect_out(1,string) 

Sie ihn in die Datei schreiben kann, wie

set fp [open output w] 
puts $fp $result 
close $fp 
+0

Vielen Dank, ich werde Ihre Lösung versuchen – Jigen