用于登录 Putty 保存的 ssh 会话并响应一系列提示的 Windows 批处理文件

问题描述 投票:0回答:1

每天我都必须通过 Putty 手动登录 ssh 会话并选择特定选项才能运行发送电子邮件的程序(大约一个小时后)。我想使用一个批处理程序来自动执行此操作,该程序可以使用 Windows 任务管理器每天运行,但我对这些类型的脚本不是很有经验。这样可以工作吗?

这是我尝试过的:

我有两个批处理文件 - myscript.bat 和 start_input.bat。我想自动执行 start_input.bat 来运行完整的程序,并从我登录的远程服务器发送电子邮件。

myscript.bat

cd C:\Program Files\PuTTY\
plink "offsite_server"

开始输入.bat

(echo.&echo myusername&echo mypassword&echo c&echo f&echo o&echo c&echo y&echo  &echo q&echo q&echo q&echo q) | myscript.bat

当我手动执行此操作时,我会登录 Putty 上的会话,然后输入一系列输入来完成该过程: 按回车键 输入“用户名”,按 Enter 键 输入“密码”,按回车键 输入“c” 输入“f” 输入“o” 输入“c” 输入“y” 按空格键 输入“q” 输入“q” 输入“q” 输入“q”

windows batch-file ssh windows-10 putty
1个回答
0
投票

仅 Windows 任务管理器无法处理这种级别的自动化。批处理文件本质上也不是 Windows 任务管理器的一部分,但可以使用它来计划运行。如果主要目标是自动执行 PuTTY 登录,

plink
确实提供了一种更简单的方法。您可以创建一个像这样的批处理文件:

登录.bat

C:\Program Files\PuTTY\plink.exe -ssh offsite_server -l myusername -pw mypassword -m C:\path\to\commands.txt

您提到的命令序列似乎与服务器自己的接口相关,而不是与 PuTTY 相关,因此这可能不起作用。静态批处理脚本可能不足以满足此目的。对于更动态的解决方案,您可以使用 Python 脚本或 VBScript 来自动执行击键。假设您想保持 Windows 的内置稳定性,VBScript 虽然较差,但可能就足够了。

脚本.vbs

Set objShell = CreateObject("WScript.Shell")

' Run Putty and connect to the server
objShell.Run "C:\Program Files\PuTTY\putty.exe -ssh offsite_server -l myusername -pw mypassword"

' Wait for Putty to launch
WScript.Sleep 5000

' Send your sequence of commands
objShell.SendKeys "c{ENTER}"
WScript.Sleep 100
objShell.SendKeys "f{ENTER}"
' ... (continue for the rest of your commands)

' Close Putty
objShell.SendKeys "%{F4}"

Python 凭借其强大的库,可以有效地处理 SSH 连接,同时还为您的要求提供更通用的环境。 paramiko 包对此特别有用:

import paramiko

# Initialize SSH client
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Connect to the server
ssh.connect('offsite_server', username='myusername', password='mypassword')

# Run commands
stdin, stdout, stderr = ssh.exec_command('c; f; o; c; y; q; q; q; q')

# Close connection
ssh.close()

您可以使用 Windows 任务计划程序安排这些脚本中的任何一个自动运行。请记住,这些是基本示例,可能需要根据您的服务器和网络设置进行进一步调整,因为问题完全存在。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.