У меня 47 клиентских машин Linux и одна серверная машина Solaris (все клиентские машины Linux имеют Red-Hat 5.1)
все клиенты выполняют ssh-соединение с сервером, чтобы проверить, существует ли на сервере /tmp/generic_error.txt
клиенты делают ssh ровно в 12:00
Я вижу что-то странное
Некоторые клиенты не распознали, что /tmp/generic_error.txt существует на сервере, несмотря на то, что этот файл существует
Итак, мой первый вывод: я не могу выполнять несколько ssh с 47 машины на один сервер?
Но я не уверен, что прав?
Посоветуйте, пожалуйста, какой процесс лучше всего выполнять ssh с 47 клиентов Linux на один сервер в одно и то же время?
примечание - я не могу коснуться и настроить "аутентификацию на основе ssh-ключа", потому что на машинах Lenox должен быть пароль (часть нашей политики безопасности)
10.10.18.61 - серверная машина
expect=`cat << EOF
set timeout -1
spawn ssh 10.10.18.61
expect {
")?" { send "yes\r" ; exp_continue }
word: {send freenelsonmandela\r}
}
expect > {send "ls /tmp/generic_error.txt\r"}
expect > {send exit\r}
expect eof
EOF`
exe ожидать:
expect -c "$expect" | grep "generic_error.txt" | grep -v ls
Если я правильно понимаю, у вас есть 47 клиентов, которым необходимо знать, существует ли какой-либо файл на сервере. И это нужно запускать одновременно.
Начнем с самого маленького компонента - вашего файла test. Вы можете расширить это
Это должно работать с большинством оболочек
ls /tmp/file 2>&1 >/dev/null && echo Found || echo Not Found
Или БАШ
[ -f /tmp/file ] && echo Found || echo Not Found
Возможно, вы захотите дополнительно проверить оболочку, которую вы используете, вероятно, ksh, и дважды проверить ее встроенные функции, чтобы увидеть, присутствует ли файл.
Теперь немного наружу, в конце вашего ожидания, вы ничего не делаете с результатами. скорее всего, это причина большинства ваших проблем. вы можете получить доступ $expect_out(buffer)
который будет содержать то, что когда-либо было между последними совпадениями.
обычно это используется как:
puts "$expect_out(buffer)"