У меня есть следующий скрипт для очистки таблицы arp коммутатора. Независимо от того, как я пытаюсь избежать всего, процитирую это или иначе пытаюсь, я не могу заставить это работать должным образом. Строка bash интерпретируется моей собственной оболочкой перед передачей в интерпретатор Expect. Я хочу, чтобы строка bash передавалась буквально, как и для переключателя, который должен быть там выполнен, НО мне нужно каким-то образом увеличить переменную $ thirdoctet в какой-то момент, и я хочу, чтобы ssh @ {ip} был расширен.
Кажется, Аристе не нравится устанавливать переменные. Я не смог определить третий октет = 3 внутри.
function get-arp {
echo ${ip}
/usr/bin/expect > arista-arp-dump-${ip} << EOF
spawn ssh admin@${ip}
expect "assword: "
send "password\r"
expect "localhost>"
send "bash for i in `seq 1 5`; do ping -c 1 10.$thirdoctet.1.$i; done"
expect "localhost>"
send "bash for i in `seq 10 19`; do ping -c 1 10.$thirdoctet.1.$i; done"
expect "localhost>"
send "show ip arp\r"
expect "localhost>"
send "exit\r"
expect "eof"
EOF
tail -n +2 arista-arp-dump-${ip} | grep b8ae | awk '{print $1,$3}' | tr ' ' ',' > arista-arp.csv
sed 's/\(.*\)\./\1 /' arista-arp.csv > tmp && mv tmp arista-arp.csv
sed 's/\(.*\)\./\1 /' arista-arp.csv > tmp && mv tmp arista-arp.csv
sed '/^$/d;s/[[:blank:]]//g' arista-arp.csv > tmp && mv tmp arista-arp.csv
rm arista-arp-dump-${ip}
}
get-arp