Задать вопрос
@ksvdon

Как получить данные с удаленного хоста при помощи expect?

Мне нужно сделать определенные действия на удаленном хосте автоматически. Например я хочу посмотреть PID какого-нибудь процесса и сохранить его в переменную на хосте, на котором я буду исполнять скрипт. Т.е. У меня есть машина "А". Я хочу на машине "Б" посмотреть PID какого-то процесса через ps -e | grep some_process | awk {'print $1'} и сохранить полученное значение в переменную для дальнейшей обработки. Выполнить действия на удаленном хосте можно примерно так:
expect -c 'spawn ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@192.168.0.1 "ps -e | grep some_process | awk {'print $1'}"; expect password; send "12345\n"; interact'

но как сохранить полученное данные для дальнейшей обработки на моём хосте? Что бы в этом же скрипте я мог оперировать данными, полученными после выполнения команды на удаленном хосте. Есть идиотская идея - скажем я сохраню вывод команды в файл на удаленном хосте, затем скопирую этот файл на мой хост, где выполняется скрипт при помощи scp, и потом буду извлекать данные из полученного файла. Но мне кажется это уж очень через жопу. Как сделать по-людски?
  • Вопрос задан
  • 2691 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
в данном случае вы можете в целом отказаться от использования expect и воспользоваться sshpass (возможно потребуется его отдельно установить) и в скрипте вы сможете добавить вывод необходимой вам команды в переменную, пример:
a=$(sshpass -p '' ssh -oStrictHostKeyChecking=no login@IP \ ps -e | grep some_process | awk {'print $1'})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы