在Windows环境中通过脚本终止SSH调用,无需任何手动干预

时间:2017-07-13 11:49:02

标签: batch-file ssh terminate

我想在这里实现的目标:

我希望通过PuTTY自动启动远程SSH会话的每日过程,调用一些命令将其响应转换为txt文件,并通过脚本终止此SSH会话。

现在按照Mofi的建议,我有这个工作就像:

plink remote_host_name -m "dir\with\Inputcommands.txt" -l username -pw password >> "dir\with\OutputResponse.txt" 

这实际上运作正常,但我希望在保存OutputResponse后能够自行终止此会话。

有关如何在Windows 7环境中通过相同脚本/没有手动干预终止此操作的任何建议吗?

1 个答案:

答案 0 :(得分:0)

我从Download PuTTY: latest release (0.70)下载了putty.zip 64位版本的 PuTTY 及其附加工具,并将ZIP文件解压缩到临时目录C:\Temp\PuTTY

接下来,我双击C:\Temp\PuTTY\PUTTY.CHM打开此帮助文件,其中包含完整的腻子用户手册

在显示的内容页面上,我首先点击列表项 2.5注销,并阅读有关如何从会话注销的信息。我读过应该使用服务器自己的logout命令,这可能因服务器而异,如果不知道, logout exit 应该尝试。

我点击按钮返回,然后点击 3.8 PuTTY命令行旁边的内容页面。在此帮助页面上,我首先点击 3.8.1从命令行启动会话。我打开了一个命令提示符窗口,使用cd /D C:\Temp\PuTTY将当前目录设置为 PuTTY 目录,并根据此帮助页面上的信息开始编写命令行。

plink -ssh username@hostname

我再次点击了帮助中的按钮返回,然后点击列表项 3.8.3.4 -l:指定登录名。阅读后我明白这是另一种指定主机(名称或IP地址)的用户/登录名的方法,我不需要为已经输入但尚未执行的命令行。因此,在命令提示符窗口中命令行无需更改。

我再次单击按钮返回,然后单击列表项 3.8.3.6 -m:从文件中读取远程命令或脚本。阅读此帮助页面后,我在包含 PuTTY 文件的同一临时文件夹中创建了一个名为GetLists.txt的文本文件,其中包含以下行:

ls -l /
ls -l /lib
history -c ; exit

此命令文件已保存为带有DOS / Windows行终止的ANSI文件。我不知道Unix行结尾会不会更好。在 PuTTY 的帮助下,没有任何关于行终止类型的文章。

我将命令提示符窗口中已输入的命令行扩展为:

plink -ssh username@hostname -m GetLists.txt

我再次点击帮助中的按钮返回,然后点击列表项 3.8.3.8 -pw:指定密码。在阅读了这个帮助页面上的两个小段落之后,我再次在命令提示符窗口中将命令行扩展为:

plink -ssh username@hostname -m GetLists.txt -pw password

我再次点击帮助中的返回按钮,看看其他内容是否也很重要,但我看起来并不是这样。

所以我切换到命令提示符窗口并执行了这个命令。它按预期工作,显示两个目录列表。 (我在几个月或几年前(我不记得)使用了PUTTY.EXE这个主机,因此关键数据已存储在我的计算机上用于此主机。)

我按下了键 UP 并将命令行扩展为:

plink -ssh username@hostname -m GetLists.txt -pw password >DirectoryLists.txt

我执行了这个命令,但没有在屏幕上显示任何内容。

所以我输入了下一个命令:

type DirectoryLists.txt

输出是两个目录列表,如前所述。

结论:我无法在我连接的主机上使用我的测试配置重现您的问题。

顺便说一下:我在几个月或几年前(我不记得)使用PuTTY来连接到旧版本0.64的主机。但这是我第一次使用plink.exe。我在阅读手册和逐步创建命令行时没有遇到任何问题。