Я написал сценарий для входа через ssh и выполнения некоторых команд. Половина устройств в списке моего списка устройств имеет другую приемлемую комбинацию имени пользователя и пароля.Цикл через несколько возможных учетных данных TCL Expect
Я хочу, чтобы ожидать, чтобы иметь возможность интерпретировать отказавший вход, начать новую попытку входа в систему с тем же устройством, но и использовать различные учетные данные для входа на второй попытки (есть два возможных имени пользователя и пароля комбинации)
Если любой может указать мне в правильном направлении, я бы очень признателен. Это мой первый опыт использования TCL или ожидания.
Конденсированный вариант того, что я до сих пор ниже.
set username "someusername"
set password "somepassword"
set devices "X.X.X.X"
foreach device $devices {
puts "Processing device: $device";
spawn plink -ssh $devices
expect "Store key in cache"
send "y\r"
expect "login as:"
send "$username\r"
expect "password:"
send "$password\r"
expect "#"
send "conf t\r"
expect "(config)#"
send "some commands\r"
expect "(config)#"
send "end\r"
expect "#"
send "copy run startup-config\r"
expect "#"
Знаете ли вы, что 'foreach' может перебирать два или несколько списков сразу? 'foreach device $ devices username $ usernames password $ passwords {...}'. Это может сделать это проще ... –
Я не знал этого Донала. Благодаря! Я думаю, что даже если в foreach было более одного списка, TCL прекратил работу после первой неудачной попытки. Более того, устройства Cisco, к которым я подключен, не запрашивают имя пользователя после неправильного пароля, поэтому я думаю, что помимо того, что вы можете передать более одного набора переменных auth, сценарий должен был бы начать новый сеанс с использованием того же $ device из $ devices. Я не уверен, что это так, просто думаю. Если, я не рад, что меня будут настроены прямо. – helloworldhello