我有以下脚本。我的要求是,如果我提供用户名和IP地址,脚本应检查主机服务器是否与给定服务器具有无密码连接。
script.sh
#!/bin/sh
echo "Enter username"
read user
echo "Enter IP address"
read ip
echo "Enter condition"
read conditon
if [ $condition == "test" ]
then
ssh -o 'PreferredAuthentications=publickey' $user@$ip "echo"
fi
以上脚本检查无密码连接并退出。如果主机之间没有连接,我希望脚本返回“成功”,如果主机之间没有无密码的连接,则我希望脚本返回“无连接”。
谢谢。
答案 0 :(得分:0)
您可以为ssh
提供一个附加选项,将其设置为BatchMode
BatchMode
如果设置为yes
,则密码/密码查询将被禁用。此选项在没有用户提供密码的脚本和其他批处理作业中很有用。参数必须为yes
或no
(默认值)。来源:
man sshconfig
以下行将返回请求的错误代码
ssh -oBatchMode=yes user@server echo > /dev/null 2>&1
如果可以登录,它将返回0
,如果登录失败,将返回非零值(255)。
因此您可以执行以下操作:
ssh -oBathMode=yes "${user}@${server}" echo > /dev/null 2>&1 && echo "Success" || echo "No Connection"
或者您甚至可以让服务器将成功回答为
ssh -oBathMode=yes "${user}@${server}" echo Success 2>/dev/null || echo "No Connection"