溫馨提示×

溫馨提示×

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

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

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

發(fā)布時間:2020-06-11 16:54:25 來源:網(wǎng)絡(luò) 閱讀:2913 作者:流星影shin 欄目:系統(tǒng)運維

1.    需求

在對windows服務(wù)器的運維當(dāng)中,如果要查看當(dāng)前的主機名、資源使用、軟件安裝情況等,大家是怎么操作呢,是登進去鼠標(biāo)挨著點擊查看,還是通過命令呢?貌似命令的方法比較專業(yè)一點。但是,如果要查看50臺、100臺甚至更多服務(wù)器的這些信息,好像就不這么簡單了。

有沒有想過,敲一條命令,十幾秒鐘,就可以查看多臺windows服務(wù)器的主機名、資源使用、軟件安裝情況等信息呢;或者還是通過一條命令,就可以啟動或者停止Nwindows服務(wù)器的系統(tǒng)服務(wù)、重啟\關(guān)機、修改注冊表等等,你能想到的大部分操作,在經(jīng)過前期簡單部署后,以后只通過一條命令,就可以實現(xiàn)同時對多臺windows服務(wù)器的管理。下面就把這個設(shè)想實現(xiàn)。

 

2.    實現(xiàn)原理及展示

2.1原理

通過我在shell下寫的腳本程序,利用Python中的paramiko模塊,通過ssh協(xié)議驗證windows的登錄信息,然后調(diào)用windowsPowerShell來實現(xiàn)命令的執(zhí)行。目前測試過windows server2008R2 2012R2 服務(wù)器,可以正常執(zhí)行。

2.2展示2個簡單例子:執(zhí)行腳本后,輸入windowsPowerShell命令即可

查詢主機名

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

查看CPU使用率

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

只要是PowerShell支持的,都可以批量執(zhí)行了。我這里只是2臺測試,當(dāng)然100臺也一樣出結(jié)果。

3.    準(zhǔn)備

3.1   一臺Centos系統(tǒng):   我使用的虛擬機centos6.6 用來執(zhí)行腳本,然后執(zhí)行windows命令。需要有python(一般已經(jīng)安裝了)

3.2   軟件:freesshd        官網(wǎng)上下載即可,主要是在被管理的windows服務(wù)器上安裝,實現(xiàn)ssh驗證

3.3  軟件:SecureCRT或者Xshell   用來連接Centos虛擬機

3.4  可選軟件:WinSCP     如果需要分發(fā)文件功能的話,windows服務(wù)器上還要需要安裝此軟件

 

4.    實現(xiàn)步驟及示例

4.1   windows服務(wù)器安裝freesshdwinscp(winscp可選)  測試中我使用了2windows虛擬機

Winscpfreesshd的安裝直接默認(rèn)下一步即可;

Winscp安裝完成后先在powershell里面執(zhí)行命令,緩存主機密鑰

cd 'C:\Program Files (x86)\WinSCP\' ; ./winscp.exe /console /command 'option batch continue' 'option confirm off' 'open sftp://root:root密碼@centos主機IP:centos主機ssh端口

執(zhí)行后按Y即可,如圖:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

freesshd安裝完成后需要稍作設(shè)置,如圖:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

第一次運行freesshd如圖

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

然后點擊右下角的freesshd圖標(biāo)進行相關(guān)設(shè)置,SSH選項卡中,將Command shell設(shè)置成C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe如圖:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

Users選項卡中點擊“Add…

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

在彈出的窗口加入windows服務(wù)器的管理員賬號,然后將Shell打上√ 如圖:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

最后可選擇是否在Automatic updates里面關(guān)閉自動更新,我一般選擇關(guān)閉

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

設(shè)置完成后,在開始-運行 里面鍵入services.mscfreesshd服務(wù)重啟一下

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

Sshdwindows服務(wù)器上設(shè)置完成,可以通過telnet ssh端口的方式測試到windows的sshd服務(wù)是否正常,如telnet X.X.X.X 22

4.2   安全設(shè)置(可選):各windows服務(wù)器上配置ipsec只允許我們的centos服務(wù)器連接sshd22端口,這樣就避免了其他未授權(quán)的ssh連接,建議設(shè)置(不設(shè)置或者會設(shè)置的可跳過此步驟下列內(nèi)容)。

       開始-運行 里面鍵入gpedit.msc進入 Windows設(shè)置-安全設(shè)置-IP安全策略,在本地計算機  創(chuàng)建策略即可:

            先設(shè)置允許的主機,這里我們需要把centos主機加入允許,如部分截圖,沒截圖的步驟默認(rèn)點擊“下一步”:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

完成后“確定”即可,然后開始建立一條拒絕任何地址(源地址:任何IP地址)到windows本機地址sshd端口的策略,如圖:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

確定后安全設(shè)置完成,然后分配策略使其生效,如圖:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

如果啟用了防火墻的話,還需要在防火墻里面設(shè)置允許freesshd程序通過防火墻,設(shè)置完成后可以在centos服務(wù)器上telnet X.X.X.Xwindows服務(wù)器IP 22 的方式來測試連接是否OK,如圖測試正常:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

 

4.3腳本準(zhǔn)備

1)在本文后面下載shell腳本

2)在centos服務(wù)器中上傳腳本,命令rz然后選擇腳本上傳即可(沒有rz命令的通過yum install -y lrzsz命令安裝),如圖:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

3vim run_win_same_cmd.sh命令修改腳本,將后續(xù)要管理的各個服務(wù)器IP、用戶名、密碼加入其中,如圖格式加入,然后保存即可。

 shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

注意ip,user,pwd的順序是一一對應(yīng)的,對應(yīng)錯誤的話是無法通過驗證的:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

   也可在windows中修改好了再上傳到centos服務(wù)器,但是要注意最好運行下dos2unix命令轉(zhuǎn)換一下。

 

4.4運行命令

1)在centos服務(wù)器中執(zhí)行sh run_win_same_cmd.sh即可(注意腳本路徑正確),如圖,運行后提示選擇,我們選擇 1.批量運行windows命令 ,回車后提示輸入windows命令,這里我們用一個簡單的命令hostname來查看,如圖:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

再來個復(fù)雜點的命令(當(dāng)然這種有點長的命令直接復(fù)制黏貼過來就行了),我們需要查看N臺服務(wù)器各自的磁盤剩余空間:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

不熟悉powershell命令的話可以參考下面鏈接里面一些常用的Powershell運維命令,當(dāng)然,更多的強大命令就根據(jù)自己需要去發(fā)現(xiàn)了。

鏈接:Windows PowerShell運維人員常用命令收集整理

2)如果需要分發(fā)文件或者軟件的話,可以在運行腳本后,選擇2.批量分發(fā)文件到windows ,可以實現(xiàn)把文件批量分發(fā)到各個windows服務(wù)器,如圖:

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

windows服務(wù)器上查看文件已經(jīng)復(fù)制過來了

shell實現(xiàn)批量在多臺windows服務(wù)器上執(zhí)行同一命令并獲取返回結(jié)果

5.    腳本下載地址


  




 


向AI問一下細(xì)節(jié)

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

AI