
Мне нужно запустить (Tcl или что-то еще) скрипт на удаленной машине Unix из (локальной) командной оболочки Windows, и я хочу, чтобы stdout/stderr скрипта отображались в Windows CLI. Код выхода также был бы полезен.
Возможно ли это с помощью ssh (putty)? Или какими-то другими способами?
решение1
Это значение по умолчанию для 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
решение2
То, что я искал, — это помощник Пэтти,plink.exe. В отличие от putty, который действует как эмулятор терминала, plink
действует как обычная (неинтерактивная) программа CLI.
Используя его, я мог бы сделать это cmd.exe
и сохранить вывод удаленной команды локально.
\> plink remote_host "ls -l" > log.txt
Лучше всего то, что это работает длясша такжетелнет!
Для справки приведем доступные варианты:
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
Да, если вы используете клиент putty ssh, вы увидите любой вывод командной строки, который создаст ваш скрипт. Чтобы получить код выхода после выполнения скрипта, введите:
echo $?
решение4
Еще один ответ:
Сохраните все ваши команды Linux вcmdlist.txtфайл и используйте следующую команду.
plink.exe -ssh -pw пароль[email protected] выход.txt
пароль==пароль для входа в устройство
uname==имя пользователя для входа в устройство
1.2.3.4==IP-адрес устройства
После выполнения этой команды все ваши команды cmdlist.txt будут выполнены на удаленном устройстве, а вывод будет сохранен в файле с именем output.txt.
Убедитесь, что plink.exe и cmdlist.txt находятся в одном каталоге, и что командная строка DOS указывает на тот же каталог.