Ошибка при отсутствии маршрута к хосту с использованием ожидаемого при чтении имени пользователя и паролей хоста из файла csv - PullRequest
0 голосов
/ 27 марта 2012

Я пишу скрипт для чтения имени пользователя, пароля и информации о хосте из файла.Затем я анализирую эту информацию, чтобы получить переменные.Затем я хотел бы добавить эти переменные в ожидаемый сценарий, который считывает все IP-адреса в моем файле и выполняет определенные команды на удаленных устройствах, в которые я пытаюсь войти.Сценарий работает, когда он подключается к известному хосту, однако, я вижу, что есть одно устройство, которое не работает и система выдает следующую ошибку.ssh: подключение к хосту 192.168.3.2 порт 22: нет маршрута к хосту

файл, который я хотел бы сделать 2 вещи: 1. Пропустите хост и перейдите к следующему хосту 2. зарегистрируйте хост, который не работаетдругой файл, чтобы я мог решить проблему с сетью на этом хосте.

Пожалуйста, см. скрипт ниже.Пожалуйста, любая помощь приветствуется.

#! /usr/bin/expect -f



## Read the file
set fid [open /csv_pars/employee1.csv]
set content [read $fid]
close $fid

## Split into records on newlines
set records [split $content "\n"]

## Iterate over the records
foreach rec $records {

## Split into fields on comma
set fields [split $rec ","]
## Assign fields to variables and print some out...
lassign $fields\  ipaddr username password
puts "$ipaddr"
puts "$username"
puts "$password"





if {$ipaddr == ""} continue
spawn ssh  -X "$username@$ipaddr"
sleep 2
expect "password:"


sleep 2
send  "$pass\r"
expect  "$"
send -- "ls -l\r"
expect "$"
send -- "exit\r"


expect eof




}

1 Ответ

0 голосов
/ 27 марта 2012

Вы должны ожидать увидеть одну из двух вещей: запрос пароля или сообщение об ошибке:

spawn ssh  -X "$username@$ipaddr"
expect {
    -re "password: ?$" {
        send  "$pass\r"
        expect  "$"
        send -- "ls -l\r"
        expect "$"
        send -- "exit\r"
        expect eof
    }
    "No route to host" {
        set fid [open error.log a]
        puts $fid "[clock format [clock seconds]]: No route to host $ipaddr"
        close $fid
    }
}
...