以 root 身份测试 ssh 连接

以 root 身份测试 ssh 连接

我正在尝试编写一个脚本来测试我是否可以以 root 用户身份连接到文件中的服务器列表中的 ssh,目前我有以下信息:

for i in $(cat servers.list); do 
if [ "ssh root@$i" ] 
then  
echo "can connect as root in server $i" 
else 
echo "can't connect as root in server $i" 
fi 
done

但它总是说可以连接,即使不是这样。

我将非常感激您的帮助。

答案1

[ "ssh root@$i" ]测试细绳 ssh root@$i非空——所以它当然总是正确的。

假设你想要做的是悄悄地执行命令ssh root@$i并测试它的退出状态

if ssh -q root@$i; then

但是,如果成功,它将(默认)打开一个登录 shell $i- 您的循环将不会继续,直到您退出这样的 shell。也许在远程主机上执行特定命令会更好:

if ssh -q root@$i /bin/true; then

最后,循环遍历结果cat是一个坏习惯:最好使用while循环:

while IFS= read -r i; do 
  if ssh -q root@"$i" /bin/true
  then  
    echo "can connect as root in server $i" 
  else 
    echo "can't connect as root in server $i" 
  fi 
done < servers.list

您可能还想看看parallel-sshpssh 包。

相关内容