我创建了一个.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
但是,如果后续命令实际上是第一个命令的子命令,那么对于、sh
、bash
、ssh
、ftp
等命令(可能对于 也是如此)来说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
开关基本上模拟打字,因此它不存在命令输入(密码和子命令)的问题。但我发现它相当不可靠。我真的不推荐它。但你可能会发现它足以完成你的任务。