使用PuTTY从Windows自动运行Linux上的运行命令

我有一个场景,我需要频繁(不同的文件名)从Windows运行Linux shell命令。 我正在使用PuTTY和WinSCP来做到这一点(需要login名和密码)。 通过WinSCP将文件复制到Linux机器中的预定义文件夹中,然后从PuTTY运行该命令。 有没有一种方法可以通过程序自动执行此操作。 理想情况下,我想右击Windows中的文件,并发出将文件复制到远程机器的命令,并运行预定义的命令(在PuTTy中)与文件名作为参数。

自动login常见方法可能存在安全问题。 下面是最简单的方法之一:

  • 从Windows命令行运行Putty

至于部分执行命令在putty UI中,Connection> SSH>有一个远程命令的字段。

4.17 SSH面板

SSH面板允许您configuration仅适用于SSH会话的选项。

4.17.1在服务器上执行一个特定的命令

在SSH中,您不必在服务器上运行常规shell会话。 相反,您可以select运行一个特定的命令(例如邮件用户代理)。 如果要这样做,请在“远程命令”框中input命令。 http://the.earth.li/~sgtatham/putty/0.53/htmldoc/Chapter4.html

总之,你的答案可能与下面的文字相似:

  • 让Putty在远程服务器上运行命令

腻子通常带有“plink”工具。
这基本上是作为一个windows.exe执行的“ssh”命令行命令。
在“使用命令行工具plink”下的“腻子手册”中有很好的logging。

你只需要打包一个命令,如:

 plink root@myserver /etc/backups/do-backup.sh 

在.bat脚本中。

您可以编写一个TCL脚本并build立到该Linux机器的SSH会话并自动发出命令。 检查http://wiki.tcl.tk/11542一个简短的教程。;

您可以创build一个putty会话,并在启动会话时自动加载服务器上的脚本:

 putty -load "sessionName" 

在远程命令中,指向远程脚本。

码:

 using System; using System.Diagnostics; namespace playSound { class Program { public static void Main(string[] args) { Console.WriteLine(args[0]); Process amixerMediaProcess = new Process(); amixerMediaProcess.StartInfo.CreateNoWindow = false; amixerMediaProcess.StartInfo.UseShellExecute = false; amixerMediaProcess.StartInfo.ErrorDialog = false; amixerMediaProcess.StartInfo.RedirectStandardOutput = false; amixerMediaProcess.StartInfo.RedirectStandardInput = false; amixerMediaProcess.StartInfo.RedirectStandardError = false; amixerMediaProcess.EnableRaisingEvents = true; amixerMediaProcess.StartInfo.Arguments = string.Format("{0}","-ssh username@"+args[0]+" -pw password -m commands.txt"); amixerMediaProcess.StartInfo.FileName = "plink.exe"; amixerMediaProcess.Start(); Console.Write("Presskey to continue . . . "); Console.ReadKey(true); } } 

}

示例commands.txt:

PS

链接: https : //huseyincakir.wordpress.com/2015/08/27/send-commands-to-a-remote-device-over-puttyssh-putty-send-command-from-command-line/

您可以使用WinSCP执行这两个任务(上载和命令执行)。 使用WinSCP脚本,如:

 option batch abort option confirm off open your_session put %1% call script.sh exit 

call命令的参考:
https://winscp.net/eng/docs/scriptcommand_call

%1%语法的引用:
https://winscp.net/eng/docs/scripting#syntax

然后你可以像这样运行脚本:

 winscp.exe /console /script=script_path\upload.txt /parameter file_to_upload.dat 

其实,你可以把上述命令的快捷方式放到Windows资源pipe理器的“ 发送到”菜单中,这样你就可以右键单击任何文件并转到发送到>使用WinSCP上传和执行远程命令 (=快捷方式的名称)。

为此,请转到文件夹%USERPROFILE%\SendTo并使用以下目标创build快捷方式:

 winscp_path\winscp.exe /console /script=script_path\upload.txt /parameter %1 

请参阅在资源pipe理器的“发送至”菜单中创build条目 。

尝试MtPutty ,你可以自动在其中的SSHlogin。 它是一个伟大的工具,特别是如果你需要多次login到多个服务器。 在这里尝试

另一个值得尝试的工具是TeraTerm 。 它真的很容易使用的SSH自动化的东西。 你可以在这里得到它。 但我最喜欢的一个总是MtPutty。

这是一个完全开箱即用的解决scheme。

  1. 安装AutoHotKey(ahk)
  2. 将脚本映射到一个键(例如F9)
  3. 在ahk脚本中,a)将命令(.ksh)文件发送到linux机器

    b)像下面这样使用plink。 应该安装Plink,如果你有腻子。

plink会话名-l用户名-pw密码test.ksh

要么

plink -ssh example.com -l用户名-pw密码test.ksh

每当您在窗口中按F9时,所有步骤将按顺序执行。