检查服务器之间无密码连接的脚本

时间:2018-10-10 15:30:51

标签: shell ssh

我有以下脚本。我的要求是,如果我提供用户名和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

以上脚本检查无密码连接并退出。如果主机之间没有连接,我希望脚本返回“成功”,如果主机之间没有无密码的连接,则我希望脚本返回“无连接”。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以为ssh提供一个附加选项,将其设置为BatchMode

  

BatchMode                如果设置为yes,则密码/密码查询将被禁用。此选项在没有用户提供密码的脚本和其他批处理作业中很有用。参数必须为yesno(默认值)。

     

来源: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"
相关问题