批量编写远程SSH命令的最佳方法(Windows)

时间:2015-01-28 16:36:23

标签: linux windows batch-file ssh putty

我希望批量编写脚本,这需要在Linux上运行远程ssh命令。我希望输出返回,所以我可以在屏幕上显示它或记录它。

我尝试了putty.exe -ssh user@host -pw password -m command_run但它在屏幕上没有返回任何内容。

之前有人这样做过吗?

3 个答案:

答案 0 :(得分:35)

PuTTY的-m开关将路径作为参数传递给脚本文件,而不是命令

参考:https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter3.html#using-cmdline-m

所以你必须将命令(command_run)保存到纯文本文件(例如c:\path\command.txt)并将其传递给PuTTY:

putty.exe -ssh user@host -pw password -m c:\path\command.txt

虽然请注意您应该使用Plink(PuTTY套件中的命令行连接工具)。它是一个控制台应用程序,因此您可以将其输出重定向到一个文件(PuTTY无法做到的)。

命令行语法相同,添加了输出重定向:

plink.exe -ssh user@host -pw password -m c:\path\command.txt > output.txt

请参阅Using the command-line connection tool Plink

使用Plink,您实际上可以直接在其命令行上提供命令:

plink.exe -ssh user@host -pw password command > output.txt

类似的问题:
Automating running command on Linux from Windows using PuTTY
Executing command in Plink from a batch file

答案 1 :(得分:2)

您也可以直接使用Bash on Ubuntu on Windows。如,

bash -c "ssh -t user@computer 'cd /; sudo my-command'"

Per Martin Prikryl的评论如下:

  

-t启用终端仿真。是否需要sudo的终端仿真取决于配置(默认情况下,您不需要它,而许多发行版覆盖默认值)。相反,许多其他命令需要终端仿真。

答案 2 :(得分:1)

作为替代选项,您可以安装OpenSSH http://www.mls-software.com/opensshd.html,然后只需安装ssh user@host -pw password -m command_run

编辑:安装后来自user2687375的响应后,仅选择客户端。完成此操作后,您应该能够从命令启动SSH。

然后您可以创建一个ssh批处理脚本,例如

ECHO OFF
CLS
:MENU
ECHO.
ECHO ........................
ECHO SSH servers
ECHO ........................
ECHO.
ECHO 1 - Web Server 1
ECHO 2 - Web Server 2
ECHO E - EXIT
ECHO.

SET /P M=Type 1 - 2 then press ENTER:
IF %M%==1 GOTO WEB1
IF %M%==2 GOTO WEB2
IF %M%==E GOTO EOF

REM ------------------------------
REM SSH Server details
REM ------------------------------

:WEB1
CLS
call ssh user@xxx.xxx.xxx.xxx
cmd /k

:WEB2
CLS
call ssh user@xxx.xxx.xxx.xxx
cmd /k