可以,先把命令做成一個(gè)目標(biāo)命令腳本,做一個(gè)批量腳本,把目標(biāo)命令腳本傳輸?shù)礁鱾€(gè)服務(wù)器上分別執(zhí)行
創(chuàng)新互聯(lián)成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元岳塘做網(wǎng)站,已為上家服務(wù),為岳塘各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
要實(shí)現(xiàn)批量部署,前提是標(biāo)準(zhǔn)化,和自動(dòng)化
1.自動(dòng)化可以完成大量重復(fù)性工作
2.標(biāo)準(zhǔn)化是部署對(duì)象必須有一定的標(biāo)準(zhǔn)
比如:賬號(hào)user1密碼是usr1,user2密碼是usr2.。。
如題:
假設(shè)那500臺(tái)機(jī)子IP為 192.168.1.1-250,192.168.2.1-250
第一種情況(簡單):
管理節(jié)點(diǎn)已經(jīng)ssh公鑰傳所有主機(jī)
[root@master ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)?
[root@master ~]# ssh-copy-id /root/.ssh/id_rsa.pub 192.168.1.1
我們只要執(zhí)行兩個(gè)循環(huán)就能完成需求
for i in {1..250}; do ssh 192.168.1.$i "echo 1 /etc/a.txt ";done
for i in {1..250}; do ssh 192.168.2.$i "echo 1 /etc/a.txt ";done
第二種情況只能用密碼登陸
要求是IP,密碼必須滿足標(biāo)準(zhǔn)化
我這邊只有一個(gè)ssh捕捉信號(hào)的腳本(完成非交互式輸入密碼),雖然沒有針對(duì)需求,但樓主可以參考下。結(jié)合第一種方法完成需求。
vim /ssh.sh
#!/usr/bin/expect
# 設(shè)置超時(shí)時(shí)間為 60 秒
set timeout 60
# 設(shè)置要登錄的主機(jī) IP 地址
set host 192.168.0.4
# 設(shè)置以什么名字的用戶登錄
set name root
# 設(shè)置用戶名的登錄密碼
set password 123456
#spawn 一個(gè) ssh 登錄進(jìn)程
spawn ssh $host -l $name
# 等待響應(yīng),第一次登錄往往會(huì)提示是否永久保存 RSA 到本機(jī)的 know hosts 列表中;等到回答后,在提示輸出密碼;之后就直接提示輸入密碼
expect {
"(yes/no)?" {
send "yes\n"
expect "assword:"
send "$pasword\n"
}
"assword:" {
send "$password\n"
}
}
expect "#"
# 下面測(cè)試是否登錄到 $host
send "uname\n"
expect "Linux"
send_user "Now you can do some operation on this terminal\n"
# 這里使用了 interact 命令,使執(zhí)行完程序后,用戶可以在 $host 終端進(jìn)行交互操作。
Interact
操作步驟:
先啟動(dòng)Linux系統(tǒng)并進(jìn)行登錄
輸入ifconfig eth0,回車查看Linux系統(tǒng)的IP地址
打開Xshell,點(diǎn)擊New,彈出的新建窗口中輸入Name(自己為該遠(yuǎn)程連接的命名),Host(需要連接的主機(jī)ip地址,就是上圖中我們查詢到的ip地址)
點(diǎn)擊OK,點(diǎn)擊Connect,彈出的窗口輸入Linux系統(tǒng)的用戶名和密碼進(jìn)行登錄驗(yàn)證
出現(xiàn)這一步,就表示遠(yuǎn)程連接成功啦。
工具準(zhǔn)備:
VMware-workstation-full-11
CentOS-6.0-i386 鏡像文件
Xshell,這里主要用于遠(yuǎn)程連接Linux系統(tǒng)。
WinSCP,這里主要用于向Linux系統(tǒng)中傳輸文件。
如果您維護(hù)多個(gè)Linux服務(wù)器,則有時(shí)您希望在所有服務(wù)器上運(yùn)行相同的命令。例如,您可能希望安裝/升級(jí)軟件包,修補(bǔ)內(nèi)核以及更新配置等。如果您必須登錄到每個(gè)服務(wù)器并手動(dòng)運(yùn)行相同的命令,那將是一項(xiàng)繁瑣的工作。
這篇文章是關(guān)于一個(gè)管理工具,它允許您一次在許多不同的機(jī)器上運(yùn)行相同的命令。
通過ClusterSSH,您可以同時(shí)在多個(gè)主機(jī)上進(jìn)行相同的更改。它提供了一個(gè)特殊的控制臺(tái)界面,您在控制臺(tái)中輸入的任何內(nèi)容都會(huì)自動(dòng)發(fā)送到任意數(shù)量的主機(jī)。
在Linux上安裝ClusterSSH
在Ubuntu,Debian或Linux Mint上安裝ClusterSSH:
$ sudo apt-get install clusterssh
要在CentOS或RHEL上安裝ClusterSSH,首先需要設(shè)置EPEL存儲(chǔ)庫,然后運(yùn)行以下命令。
$ sudo yum install clusterssh
要在Fedora上安裝ClusterSSH,只需運(yùn)行:
$ sudo yum install clusterssh
配置ClusterSSH
安裝后,第一步是定義要在其上運(yùn)行命令的主機(jī)群集。為此,請(qǐng)按如下方式創(chuàng)建系統(tǒng)范圍的ClusterSSH配置文件。
$ sudo vi / etc / clusters
clusters = my_cluster my_cluster2
my_cluster = host1 host2 host3 host4
my_cluster2 = host5 host6
如果您需要特定于用戶的ClusterSSH配置,只需使用?/ .csshrc而不是/ etc / clusters。在上面的示例配置中,我定義了兩個(gè)集群:“my_cluster”由四個(gè)主機(jī)組成,“my_cluster2”包含兩個(gè)主機(jī)。群集是您要登錄并運(yùn)行命令的一組主機(jī)。
當(dāng)您使用任何用戶定義的群集啟動(dòng)ClusterSSH時(shí),它將使用ssh登錄到群集中的各個(gè)主機(jī),并在主機(jī)上運(yùn)行任何用戶類型的命令。
啟動(dòng)ClusterSSH
要啟動(dòng)ClusterSSH,請(qǐng)按如下方式運(yùn)行cssh命令。
$ cssh -l dev my_cluster
在上文中,“dev”是群集中所有主機(jī)的登錄ID,“my_cluster”是群集名稱。
如果需要,可以指定單個(gè)主機(jī)名而不是群集名。
$ cssh -l dev host1 host2 host3
一旦CSSH執(zhí)行命令時(shí),它會(huì)彈出用于單個(gè)主機(jī)的XTerm窗口,以及標(biāo)記的一個(gè)小窗口“CSSH [2]”,其是ClusterSSH控制臺(tái)窗口。無論您在控制臺(tái)窗口中輸入什么,都將同時(shí)出現(xiàn)在各個(gè)主機(jī)的XTerm窗口中?;旧?,您可以通過單一控制臺(tái)窗口控制所有XTerm窗口。
如果要將某些命令運(yùn)行到特定的XTerm窗口,只需將焦點(diǎn)切換到Xterm窗口,然后像往常一樣鍵入命令。
以下屏幕截圖顯示了ClusterSSH的運(yùn)行情況,其中群集中有五個(gè)主機(jī),左上角的控制臺(tái)窗口是您應(yīng)該鍵入要在所有五個(gè)主機(jī)上運(yùn)行的命令的位置。
轉(zhuǎn)自 嘉為教育-rhce認(rèn)證_rhce培訓(xùn)_linux培訓(xùn)_linux認(rèn)證_linux考證
1、在本機(jī)安裝SSH工具,(SSH工具有很多比如xShell、FianlShell)
2、在Linux中配置ssh服務(wù),
3、本機(jī)打開SSH工具配置Linux的ip地址及端口號(hào)即可同時(shí)連接多臺(tái)Linux主機(jī)進(jìn)行操作。
望采納。