溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

批量修改主機名腳本

發(fā)布時間:2020-07-06 20:07:08 來源:網絡 閱讀:1491 作者:不再少年狂 欄目:開發(fā)技術

腳本思路:生成秘鑰后,批量傳輸秘鑰,根據hosts文件批量修改主機名。

運行環(huán)境:用戶名統(tǒng)一是root,密碼統(tǒng)一是123456


腳本

#!/bin/bash
# check expect first
#############################################################
passwd=123456
key=/root/.ssh/id_rsa
ip=`ifconfig eth0 | sed -n '2p'| cut -d: -f2 | cut -d" " -f1`
lname=`cat /etc/hosts | grep ^$ip | awk '{print $2}'`
# change local hostname
sed -i "s/^HOS.*/HOSTNAME=$lname/" /etc/sysconfig/network; hostname $lname
# ssh-keygen
if [ ! -f $key ];then
/usr/bin/expect <<END
spawn ssh-keygen -b 1024 -t rsa
expect "*id_rsa*"
send "\r"
expect "*passphrase):"
send "\r"
expect "*again:"
send "\r"
expect eof
END
fi
# ssh-copy-id
for dip in `cat /etc/hosts |grep -v $ip | awk 'NR>2 {print $1}'|grep -v ^#`
do
expect -c "
set timeout -1
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $dip
expect {
\"*yes/no*\" {exp_send \"yes\r\"; exp_continue}
\"*password:\" {send \"$passwd\r\"}
}
expect eof"
scp /etc/hosts $dip:/etc
name=`grep ^$dip /etc/hosts | awk '{print $2}'`
ssh $dip "sed -i "s/^HOS.*/HOSTNAME=$name/" /etc/sysconfig/network"
ssh $dip "hostname $name"
done


注:

  1. 直接執(zhí)行腳本即可,不需要加參數(shù);

  2. 使用ssh鏈接的時候,第一次需要輸入“yes”來確認,而第二次不需要,這個腳本中ssh-copy-id這一部分,用到了expect的類似于if判斷的語句,解決了這個問題;

  3. 秘鑰傳輸成功以后,可以把scp /etc/hosts $dip:/etc替換成想要傳輸?shù)奈募?;把ssh $dip "hostname $name"替換成想要執(zhí)行的命令。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI