Удаленно запустить скрипт на Unix, получить вывод локально?

104680
Cristi Diaconescu

Мне нужно запустить (Tcl или любой другой) сценарий на удаленной машине Unix из (локальной) командной оболочки Windows, и я хочу, чтобы stdout / stderr сценария отображался в CLI Windows. Код выхода также будет полезен.

Возможно ли это с помощью ssh (putty)? Или любым другим способом?

Спасибо!

41

5 ответов на вопрос

38
kmarsh

Это значение по умолчанию для SSH. Если вы хотите перенаправить вывод удаленно, поместите символ перенаправления (обычно «>») в кавычки команды.

Например:

ssh remote_host "ls > /tmp/file_on_remote_host.txt" 

Для сохранения вывода локально на хосте Windows,

ssh remote_host "ls" > .\file_on_local_host.txt 

Чтобы объединить stderr удаленно и сохранить его и stdout локально,

ssh remote_host "ls 2>&1" > .\combined_output_on_local_host.txt 
Возможно ли это сделать с помощью putty.exe? Т.е. работают как "обычная" программа CLI, а не по умолчанию, которая должна эмулировать терминал. Cristi Diaconescu 14 лет назад 0
Я вставил в систему Windows 2003 и запустил командную строку, да. На хосте была установлена ​​версия SSH-сервера HP для поддержки инструментов системного администрирования. Если у вас есть только SSH-клиент, то все работает в удаленной системе. kmarsh 14 лет назад 0
Это работает также для локальных компьютеров, отличных от Windows. shiri 7 лет назад 1
За исключением пути с обратной косой чертой, да. kmarsh 7 лет назад 0
20
Cristi Diaconescu

То, что я искал, это боковой удар замазки, plink.exe . В отличие от putty, который действует как эмулятор терминала, plinkдействует как обычная (неинтерактивная) программа CLI.

Используя его, я мог сделать это cmd.exeи получить удаленный вывод команды, сохраненный локально.

\> plink remote_host "ls -l" > log.txt 

Лучше всего, это работает как для SSH, так и для Telnet !

Просто для справки, вот доступные варианты:

PuTTY Link: command-line connection utility Release 0.59 Usage: plink [options] [user@]host [command] ("host" can also be a PuTTY saved session name) Options: -V print version information and exit -pgpfp print PGP key fingerprints and exit -v show verbose messages -load sessname Load settings from saved session -ssh -telnet -rlogin -raw force use of a particular protocol -P port connect to specified port -l user connect with specified username -batch disable all interactive prompts The following options only apply to SSH connections: -pw passw login with specified password -D [listen-IP:]listen-port Dynamic SOCKS-based port forwarding -L [listen-IP:]listen-port:host:port Forward local port to remote address -R [listen-IP:]listen-port:host:port Forward remote port to local address -X -x enable / disable X11 forwarding -A -a enable / disable agent forwarding -t -T enable / disable pty allocation -1 -2 force use of particular protocol version -4 -6 force use of IPv4 or IPv6 -C enable compression -i key private key file for authentication -noagent disable use of Pageant -agent enable use of Pageant -m file read remote command(s) from file -s remote command is an SSH subsystem (SSH-2 only) -N don't start a shell/command (SSH-2 only) -nc host:port open tunnel in place of session (SSH-2 only) 
3
Mark

Да, если вы используете ssh-клиент putty, вы увидите любые выходные данные командной строки, которые сгенерирует ваш скрипт. Чтобы получить код выхода после запуска скрипта, введите:

echo $? 
1
James

Другой способ получить файл журнала на вашем компьютере с Windows: - смонтировать Windows m / c в системе Unix (в зависимости от разновидности UNIX, это может быть возможно с помощью сервера Samba) - запустить скрипт из windows с помощью любого удаленного клиента - иметь лог скрипт в смонтированный каталог

Вы можете увидеть вывод в реальном времени, если получите UNIX-эквивалент tail для Windows .

0
manjesh23

Еще один ответ:

Сохраните все ваши команды linux в файле cmdlist.txt и используйте приведенную ниже команду.

plink.exe -ssh -pw passwd uname@1.2.3.4 output.txt

passwd == пароль для входа в устройство

uname == имя пользователя для входа в устройство

1.2.3.4 == IP-адрес устройства

После выполнения этой команды все ваши команды cmdlist.txt будут выполняться на удаленном устройстве, а выходные данные сохраняются в файле с именем output.txt.

Убедитесь, что plink.exe и cmdlist.txt хранятся в одном и том же каталоге, и вы указываете на то, что ваш запрос dos находится в одном каталоге.

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