【发布时间】:2012-10-10 21:10:42
【问题描述】:
我想从多个服务器收集信息,无论它们的 grub.conf 是否包含“elevator”参数。
现在,无密码密钥身份验证是我目前无法做到的。我可以在脚本中指定密码。
有人可以帮我实现这个吗?
这就是我所做的:
#!/bin/bash
GRUB="/etc/grub.conf"
_pair="$(</home/wadhwaso/login.txt)"
Server_info="/tmp/server_info"
for e in $_pair
do
# extract user and ips for each $e in $_pair
IFS='@'
set -- $e
_user="$1"
_ip="$2"
sleep 2
echo "Connecting to server '${_ip}' via SSH..."
ssh ${_user}@${_ip} "sudo grep -q "elevator=noop" "$GRUB" >/dev/null"
if [ $? -eq 0 ]; then
echo "Present on ${_ip}" | tee -a "${Server_info}"
else
echo "not present on ${_ip}" | tee -a "${Server_info}"
fi
done
我不想每次都提供密码,并且由于我的环境中不存在无密码身份验证并且不可能,我必须在脚本本身中传递密码,这真的不会打扰我,我可以做到这一点。我知道它可以通过 expect 来完成,但每次我尝试使用它时都搞砸了。
我尝试按照第一个答案中的方式使用 expect,但我失败了。
【问题讨论】:
-
使用公钥和私钥认证?然后只需使用 while 循环从文件中读取服务器列表。
-
我希望我可以做密钥认证 Jason,但这不会发生.. 我尝试让我的脚本从文件中读取服务器名称,但我不知道为什么它没有这样做
标签: bash expect remote-access