如何從windows平臺自動連接到Linux/Mac機運行shell腳本?

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

背景:

某項目要求從性能測試工具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" [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的機會真的好難得啊...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章