Захват stdout из ssh-сессии на локальную машину

Здесь:

grep -o '[^,]\+$'
  • [^ ,] \ + соответствует одному или нескольким символам, которые не являются , в конце строки ( $ )

  • -o печатает только совпадающую часть

Пример:

% grep -o '[^,]\+$' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value
1
21.07.2016, 21:59
1 ответ

Команда expect, которую вы используете:

spawn ssh test@192.168.142.15 ls > ls_from_remotes_sys

Это, фактически, вызывает

exec("ssh","test@192.168.142.15","ls",">","ls_from_remotes_sys")

Это означает, что три параметра (ls, > и имя файла) посылаются удаленной системе; то есть перенаправление происходит на удаленной системе.

Вариантом kludge может быть вызов через sh -c "ssh test@....".

Другой альтернативой может быть перенаправление вне expect скрипта

например: если вы назовете это "get_ls"

#!/usr/bin/expect -f

spawn ssh test@192.168.142.15 ls
expect "test@192.168.142.15's password:"
send "password\r"
interact

Тогда вы можете сделать get_ls > ls_from_remotes_sys.

4
27.01.2020, 23:19

Теги

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