我试图在变量中获取命令的输出并检查它是否与其他变量匹配。
$login1=`ssh ****************** date`;
手动键入此命令时,会出现提示“密码:”。当我从脚本运行它时,它正在破坏该命令并打印该提示等待用户进入,但我不需要它。我只需要获得该输出并进行比较
if($login1=~ /Password:/)
{
print " yes";
}
else
{
print "No ";
}
然而,脚本只是在密码提示下停止。请建议我如何实现这一目标。
答案 0 :(得分:0)
您可能希望查看-f
的{{1}}标记:
ssh
如果您想避免密码,请设置一个没有密码的公钥/私钥对(危险,但比在脚本中输入密码要危险得多)并将公钥复制到远程站点。 IIRC,它是这样的:
-f Requests ssh to go to background just before command execution.
This is useful if ssh is going to ask for passwords or
passphrases, but the user wants it in the background. This
implies -n. The recommended way to start X11 programs at a
remote site is with something like ssh -f host xterm.
确保将localhost $ ssh-keygen -b 2048 -t ecdsa -N '' -f ./datekey
localhost $ scp ./datekey.pub remotehost:/tmp
localhost $ ssh remotehost
(login)
remotehost $ cat /tmp/datekey.pub >> ~/.ssh/authorized_keys
remotehost $ logout
localhost $ ssh -i ./datekey remotehost date
存储在其他用户根本无法访问的位置 - 甚至不能读取访问权限。
如果您只想尝试检测,您可能只需要将其输入EOF以使其移动:
./datekey