ich schreibe ein Bash-Script (unter Debian Stretch) welches beim ersten Treffer abbricht. Ich möchte einen Wert auf einem Remote-Rechner (einem Hardware-Router) per ssh auslesen und weiterverarbeiten / speichern. Das Script:
Code: Alles auswählen
#!/bin/bash
cat ips.txt | while read output
do
ping -c 1 "$output" > /dev/null
if [ $? -eq 0 ]; then
echo "$output ist an"
modell=`sshpass -p PASSWORT ssh -o StrictHostKeyChecking=no root@$output 'status -v sys'`
#modell=$(sshpass -p "PASSWORT" ssh -o StrictHostKeyChecking=no root@$output "status -v sys" | grep "Product Name" | sed -e "s/Product Name : //")
echo "$modell"
else
echo "$output ist aus"
fi
done
Der Befehl allein funktioniert:
Code: Alles auswählen
root@ycloud:~/$ sshpass -p PASSWORT ssh -o StrictHostKeyChecking=no root@10.0.1.1 'status -v sys'
Product Name : XR5i-v2
Product Type : N/A
Firmware Version : 6.1.8 (2018-11-08)
Serial Number : 5329398
Profile : Standard
Supply Voltage : 26.5 V
Temperature : 39 �C
CPU Usage : 100%
Memory Usage : 17104 KB / 59084 KB
Time : 2019-05-08 14:22:36
Uptime : 0 days, 12 hours, 22 minutes
root@ycloud:~/$
Später soll nur noch das Modell, zB. "XR5i-v2" als Ausgabe herauskommen, das grep und sed im Script hat aber auch noch nicht geklappt (allein funktioniert der ausgeklammerte Befehl).
Und jetzt mal das Script ausgeführt:
Code: Alles auswählen
root@ycloud:~/$ ./neu.sh
10.0.0.1 ist aus
10.0.1.1 ist an
Product Name : XR5i-v2
Product Type : N/A
Firmware Version : 6.1.8 (2018-11-08)
Serial Number : 5329398
Profile : Standard
Supply Voltage : 26.5 V
Temperature : 39 �C
CPU Usage : 100%
Memory Usage : 17116 KB / 59084 KB
Time : 2019-05-08 14:52:54
Uptime : 0 days, 12 hours, 52 minutes
root@ycloud:~/$
Und wenn ich statt dem sshpass-Befehl zB. "ls /etc/samba/" nehme, wird auch alles korrekt ausgeführt:
Code: Alles auswählen
root@ycloud:~/$ ./neu.sh
10.0.53.1 ist aus
10.0.0.1 ist aus
10.0.1.1 ist an
gdbcommands
smb.conf
smb.conf-old
tls
10.0.10.1 ist an
gdbcommands
smb.conf
smb.conf-old
tls
10.0.11.1 ist an
gdbcommands
smb.conf
smb.conf-old
tls
10.0.12.1 ist an
gdbcommands
smb.conf
[...]
Ah, vielleicht etwas weitergekommen. Wenn ich set -vx setze kommt:
Code: Alles auswählen
[...]
10.0.53.1 ist aus
+ read ip
+ ping -c 1 10.0.0.1
+ '[' 1 -eq 0 ']'
+ echo '10.0.0.1 ist aus'
10.0.0.1 ist aus
+ read ip
+ ping -c 1 10.0.1.1
+ '[' 0 -eq 0 ']'
+ echo '10.0.1.1 ist an'
10.0.1.1 ist an
+ sshpass -p PASSWORT ssh -o StrictHostKeyChecking=no root@10.0.1.1 'status -v sys'
Product Name : XR5i-v2
Product Type : N/A
Firmware Version : 6.1.8 (2018-11-08)
Serial Number : 5329398
Profile : Standard
Supply Voltage : 26.5 V
Temperature : 41 �C
CPU Usage : 100%
Memory Usage : 17100 KB / 59084 KB
Time : 2019-05-09 14:10:04
Uptime : 0 days, 12 hours, 10 minutes
+ read ip
exit 0
+ exit 0
root@ycloud:~/$