如何從windows平台自動連接到Linux/Mac機運行shell指令碼?

來源:互聯網
上載者:User

標籤:windows平台自動執行linux指令碼 putty 批量關機

不算什麼新知識了,但是對於像我這樣的小白來說,如果一早就能找到一篇這樣從實戰中總結出來的心得,就不會今天忙得只喝兩杯水了(好吧,膽大心細臉皮厚是我的人生座右銘╭(╯^╰)╮)

背景:

某項目要求從效能測試工具LoadRunner中類比並發使用者調用位於一台mac虛擬機器上的shell指令碼。

putty 批量關機  http://alwaysyunwei.blog.51cto.com/3224143/1223455/

方法一:Plink windows bat(通用方法)

這個方法的原理是通過windows上免費的OpenSSH工具Putty帶的plink工具實現遠程登入伺服器並自動運行shell指令碼。

步驟1:下載plink.exe & putty.exe值本地目錄,如d:\Proram Files\plink.exe。這兩個軟體都是免安裝版的。

步驟2:將需要啟動並執行shell指令碼放到本地目錄。如c:\test.sh

步驟3:建立一個tet.bat檔案,並在其中寫入如下命令:


=此方法本人測試沒通,使用putty實現的


@echo off

d:

cd Program Files

plink -l [userName] -pw [password] -m c:\test.sh [ServerName or IP]

exit

儲存後雙擊運行即可。在這裡要注意的是因為我的plink.exe放在了D盤的program files這個檔案夾下,也就是對應上面指令碼的第二行和第三行。實際使用中需要換成當前放置plink.exe的目錄。還有一點特別要注意的是想要啟動並執行shell指令碼是要放到你本地的,我一開始以為是放到server端,而且看到網上一些文章也寫的是server端,事實證明運行是通不過的,所以這裡也需要注意。

在運行時,命令列會視窗彈出停一會,然後自動關閉。如果想檢查test.sh裡所寫的是不是真的被運行了,建議在test.sh裡加入一些debug的輸出語句,把內容輸出到某個檔案,然後就可以通過Putty或者其他ssh client訪問server並查看這個output檔案了。

還需要說明的一點是在mac機的system preference/sharing配置裡需要把remote logon勾選上,不然ssh串連的建立會失敗。(這個我糾結了,最後還是Frank找到的solution~)

至於在LoadRunner中調用test.bat這個批次檔就比較簡單了,使用system()這個函數就可以了。perl或者shell指令碼的調用同理。

PUTTY方法:

下載putty.exe (綠色版)

bat 如下


@echo off  

@color 0A  

set path=%cd%

cd %path%

"%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" tom[email protected]

pause




==附送重啟指令碼


@echo off

@color 0A

set path=%cd%

cd %path%


:input

@echo 0.101 ━━━━四川重慶API伺服器━━━━ 

@echo 0.103 ━━━━四川重慶DAO伺服器━━━━ 

@echo 0.130 ━━━━資料平台,四員聯動伺服器━━━━ 

@echo 0.131 ━━━━SAAS-API伺服器━━━━ 

@echo 0.132 ━━━━SAAS-DAO伺服器━━━━ 

@echo 0.180 ━━━━快消品伺服器━━━━ 

set/p floor=......請輸入需要重啟的應用的伺服器(如0.101、0.103、請輸入101、103):


if %floor% neq  101 (

if %floor% neq  103 (

if %floor% neq 130 (

if %floor% neq 131 (

if %floor% neq 132 (

if %floor% neq 180 (

if %floor% neq 5 (

if %floor% neq 9 (

if %floor% neq 10 (

if %floor% neq 11 (

if %floor% neq 12 (

if %floor% neq 13 (

if %floor% neq 14 (

if %floor% neq 15 (

if %floor% neq 16 (

echo.

echo 請檢查您輸入的伺服器是否存在

goto :input

)

)

)

)

)

)

)

)

)

)

)

)

)

)

)


if %floor%== 101 (

@echo 選擇101,正在重啟四川重慶API應用

"%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" [email protected]

@echo 重啟四川重慶API應用結束........ 0.130

goto :end 0.130

) 0.130

if %floor%== 103 ( 0.130

@echo 選擇103,正在重啟四川重慶DAO應用 0.130

"%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" [email protected]

@echo 重啟四川重慶DAO應用結束........ 0.130

goto :end 0.130

) 0.130

if %floor%== 130 ( 0.130

@echo 選擇130,正在重啟資料平台四員聯動應用 0.130

"%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" [email protected]

@echo 重啟資料平台四員聯動應用結束........ 0.130

goto :end 0.130

) 0.130

if %floor%== 131 ( 0.130

@echo 選擇131,正在重啟SAAS-API應用 0.130

"%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" [email protected]

@echo 重啟SAAS-API應用結束........ 0.130

goto :end 0.130

) 0.130

if %floor%== 132 ( 0.130

@echo 選擇132,正在重啟SAAS-DAO應用 0.130

"%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" [email protected]

@echo 重啟SAAS-DAO應用結束........ 0.130

goto :end 0.130

) 0.130

if %floor%== 180 ( 0.130

@echo 選擇180,正在重啟快消品應用 0.130

"%path%/putty.exe" -ssh -pw thwltomcat   -m  "%path%/restart.txt" [email protected]

@echo 重啟快消品應用結束........

goto :end

)


)

:end

@echo 重啟Tomcat服務結束━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━


pause






方法二:LR內建的RTE協議錄製

這個方法的原理是採用LoadRunner內建的RTE(Remote Terminal Emulation)協議直接錄製使用者建立SSH串連和activity的過程並轉化為LR指令碼。步驟如下:

步驟1:修改recording options.(以下僅針對錄製Linux server)

1) 取消所有與IBM相關的勾選

2)選擇Session type=Telnet,連接埠=22,terminal type=SSH, 然後點擊connect按鈕進行錄製。

步驟2:修改和調試指令碼。

步驟3:在controller中運行指令碼。

前面兩步都沒什麼問題,但是步驟3就碰到了各種攔路虎。首先是不能啟用ip欺騙,否則會出現你所選擇的協議不支援按線程啟動並執行提示;取消ip欺騙後運行,發現generator CPU資源很快就被mdrv.exe進程佔滿了,100%後直接死在那了。即使運行單使用者,mdrv.exe也會佔50%左右的CPU。我看到網上有些同行用RTE協議在單台機器上類比過300左右的使用者,不知道為什麼我錄製的ssh登入 echo命令執行 exit會這麼佔資源..在群裡問了也沒人知道,可能這個協議在公司裡用得不是那麼多吧,據說銀行業比較會用到。還有最後一個問題是使用者跑完第一次迭代就等在那裡,不再繼續跑下一個迭代,也不退出系統。Vugen裡多迭代完全無障礙啊,也檢查過controller裡pacing什麼的都沒問題,撓破頭也沒想出來是為什麼,抓狂啊!

目前今天的成果就是這樣了,最後可行的還是方案一。方案二後續可以繼續研究,目前看來IT的項目中需要用到http之外的協議並且思科買了license的機會真的好難得啊...


本文出自 “隱隱的淚” 部落格,轉載請與作者聯絡!

如何從windows平台自動連接到Linux/Mac機運行shell指令碼?

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.