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


45

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

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

Благодарность!

Ответы:


44

Это значение по умолчанию для 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, а не по умолчанию, которая должна эмулировать терминал.
Кристи Диаконеску

Я вставил в систему Windows 2003 и запустил командную строку, да. На хосте была установлена ​​версия SSH-сервера HP для поддержки инструментов системного администрирования. Если у вас есть только SSH-клиент, то все работает в удаленной системе.
kmarsh

1
Это работает также для локальных компьютеров, отличных от Windows.
Шири

За исключением пути с обратной косой чертой, да.
kmarsh

20

То, что я искал, это боковой удар замазки , 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

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

echo $?

1

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

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


0

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

Сохраните все ваши команды 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 находится в одном каталоге.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.