Віддалене виконання сценарію на Unix, отримати вихід на локальному рівні?


45

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

Чи можливо це за допомогою 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 і запускаю командний рядок, так. У хості була встановлена ​​версія HP-сервера SSH для підтримки їх інструментів системного адміністрування. Якщо у вас є лише клієнт SSH, все працює на віддаленій системі.
кмарш

1
Це працює і для локальної машини, яка не є Windows.
ширі

За винятком шляху зворотної косої риски, так.
кмарш

20

Те, що я шукав, - це боковий удар, який поставляє шпаклівка, plink.exe . На відміну від шпаклівки, яка діє як емулятор терміналу, 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

Так, якщо ви використовуєте клієнт putty ssh, ви побачите будь-який вихід командного рядка, який буде виробляти ваш скрипт. Щоб отримати вихідний код після запуску сценарію, введіть:

echo $?

1

Інший спосіб отримати файл журналу на вашій машині Windows: - встановити Windows m / c в системі Unix (залежно від аромату UNIX, це могло бути можливо за допомогою сервера Samba) - запустіть сценарій з Windows за допомогою будь-якого віддаленого клієнта - мати вхід сценарію в змонтований каталог

Ви можете побачити вихід в реальному часі, якщо ви отримаєте UNIX-еквівалент хвоста для 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.