我只需要根据IP地址为所有桌面计算机重新命名主机名。例如,如果IP地址是172.29.72.25,则主机名应分配为node25;如果IP地址是172.29.72.26,则主机名应为node26,依此类推。我可以通过密钥进行SSH访问所有这些主机。我认为可以通过Bash脚本实现,有人能帮助我吗?提前感谢您的帮助。
/etc/hostname
中。address
是您的IP地址列表:for A in `cat address` ; do NODE="node`echo $A | cut -d. -f4`" ; ssh $A "echo $NODE > /etc/hostname" ; done
echo "password" | sudo -S
;请注意,这是不安全的,因为您会将密码留在shell历史记录中。可以使用history
命令查找并使用history -d
删除它。for A in `cat address` ; do
NODE="node`echo $A | cut -d. -f4`"
ssh $A "echo 'myPassword' | sudo -S echo $NODE > /etc/hostname"
done
127\.0\.0\.
替换为实际匹配你子网的模式。它会保留文件中剩余的行不变。/^127\.0\.0\./ {
split($1, quads, /\./)
print $1 "\tnode" quads[4]
next
}
{ print $0 }
ssh $A "awk '/^127\.0\.0\./ { split(\$1, quads, /\./) ; print \$1 \"\tnode\" quads[4] ; next } { print \$0 }' /etc/hosts > /tmp/hosts.new"
ssh $A "echo 'myPassword' | sudo -S mv /etc/hosts /etc/hosts.old"
ssh $A "echo 'myPassword' | sudo -S mv /tmp/hosts.new /etc/hosts"
/etc/hosts
中更改主机名。请检查并更新你的回答。 - karthick87