如何通过创建批处理文件在 PuTTY 中输入命令?

如何通过创建批处理文件在 PuTTY 中输入命令?

我创建了一个.bat文件,它会自动获取 SSH 服务器(跳转服务器)的访问权限。现在,我有几个命令想要在该窗口中执行。

例如(获取 root 权限)

usrun -u root rush

使用这个命令,它会要求我输入密码。

那么,我如何才能完全通过.bat文件实现这一点?

答案1

要使用 PuTTY 自动执行命令,请使用-m转变传递包含要运行的命令的文本文件,例如:

putty.exe -ssh user@host  -m commands.txt

其中将commands.txt包含

usrun -u root rush

您可能还想添加-t
Plink 使用 PuTTY 配色方案


但这不会帮助您输入密码,因为这是命令的输入usrun,而不是命令本身,所以-m这里没用。我不知道usrun,所以我不能确定它是否有办法通过“输入”密码来“验证”任何其他方法。总的来说,每当你尝试自动输入密码时,你都做错了。这是一种安全风险。一定要检查是否有更好(=更安全)的方法。


另一个问题是进一步的命令。如果您要执行的所有命令都要在同一个环境/shell 中执行,则可以将它们逐行放入commands.txt

command1
command2

但请注意,并非所有 SSH 服务器都支持多行。但大多数都支持。如果不支持,您可以始终使用特定于服务器/shell 的方式在一行上执行多个命令,例如:

command1 && command2

su但是,如果后续命令实际上是第一个命令的子命令,那么对于、shbashsshftp等命令(可能对于 也是如此)来说usrun,后续命令实际上是第一个命令的输入,而不是顶级环境/shell 的独立命令。这实际上与上面的密码输入问题相同。

与密码问题相反,对于子命令,主命令可能有另一种机制来提供它们,而不是使用输入。


话虽如此,你可以使用Plink(PuTTY 命令行连接工具)而不是 PuTTY。它是 PuTTY 软件包中的一个工具,其工作方式与 PuTTY 类似,但它是一个控制台应用程序,而不是 GUI 应用程序。因此,它可以使用输入/输出重定向。因此,您甚至可以从文件中重定向密码或主命令的子命令,就像您在控制台上输入它们一样。无论如何,Plink 是自动执行任务的工具,而不是 PuTTY。

echo usrun -u root rush>input.txt
echo password>input.txt
echo command_for_usrun>input.txt
plink -ssh user@host < input.txt

或者使用猫咪它的-cmd开关可以做你想做的事。KiTTY 是一个 GUI 应用程序(它是 PuTTY 的克隆)。它的-cmd开关基本上模拟打字,因此它不存在命令输入(密码和子命令)的问题。但我发现它相当不可靠。我真的不推荐它。但你可能会发现它足以完成你的任务。

相关内容