我创建了一个.bat
自动获取SSH服务器(Jump Server)访问权限的文件。现在,我有几个命令,我想在那个窗口中点击。
对于前者。(要获得root访问权限)
usrun -u root rush
使用此命令,它将要求我输入密码。
那么,我怎样才能完全通过.bat
文件来实现呢?
.bat
文件。合理?PS; 我没有任何关于制作这样的批处理文件的背景知识。我是新手。:(
我创建了一个.bat
自动获取SSH服务器(Jump Server)访问权限的文件。现在,我有几个命令,我想在那个窗口中点击。
对于前者。(要获得root访问权限)
usrun -u root rush
使用此命令,它将要求我输入密码。
那么,我怎样才能完全通过.bat
文件来实现呢?
.bat
文件。合理?PS; 我没有任何关于制作这样的批处理文件的背景知识。我是新手。:(
Answers:
要使用PuTTY自动执行命令,请使用-m
开关传递带有要运行的命令的文本文件,如:
putty.exe -ssh user@host -m commands.txt
哪里commands.txt
会包含
usrun -u root rush
但这不会帮助你使用密码,因为这是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
或者使用KiTTY和它的-cmd
开关来做你想要的。KiTTY是一个GUI应用程序(它是PuTTY的克隆)。它的-cmd
开关基本上模拟了键入,因此它没有命令输入(密码和子命令)的问题。但我发现它相当不可靠。我真的不推荐它。但是你可能会发现它足以完成你的任务。
.bat
样子。C:\ Users_my_user_ \ Putty.exe -load“ Jump_Server ”-l username -pw password -m“ 包含命令的文本文件路径 ”这成功地将我带到了我想要的位置。现在,从技术上讲,它应该采用我在文本文件中留下的命令,但它没有采取。文本文件只包含usrun -u root rush
任何想法这里有什么问题?
usrun
则无法将其与输入密码相结合(至少不能使用简单的命令行工具)
-m
在语法中使用以及我应该在记事本文件中使用哪些命令。