Bash For Loop - 提示输入 IP 范围和密码

Bash For Loop - 提示输入 IP 范围和密码

我有一个简单的 for 循环一衬里,用于检查具有相同密码集的多个服务器上的内容。我想将这个衬垫开发成一个脚本,通过 IP 地址登录到服务器集群,提示输入密码并执行命令。比如重启一个服务。这就是我使用的:

    for i in {1..253}
do sshpass -p PASSWORDHERE ssh -o StrictHostKeyChecking=no [email protected].${i} 'hostname
echo "Checking if foo.log exists: `ls -lh /var/log/foo.log | wc -l`"
echo "Checking if bar.log is present: `ls -lh /var/log/bar.log | wc -l`"
' 2>/dev/null; echo ""; done

我的剧本很弱,我真的不知道从哪里开始。顺便说一句,我想通过一套基本的工具来实现这一目标。我无法安装任何第三方。

任何帮助表示赞赏。

答案1

for i in {1..253}
do 
    ip=192.168.1.${i}
    echo "Enter password for: $ip"
    read pswd
    case "$pswd" in
        *) password=$pswd;;
    esac
    sshpass -p "$password" ssh -o StrictHostKeyChecking=no username@$ip 'hostname
    echo "Checking if foo.log exists: `ls -lh /var/log/foo.log | wc -l`"
    echo "Checking if bar.log is present: `ls -lh /var/log/bar.log | wc -l`"
    ' 2>/dev/null
done

那应该有效。请记住,如果您厌倦了在测试期间运行该循环,或者只是使用较小的范围(例如 1 到 5)来调试它,则 ctrl + c 将终止该循环。

相关内容