2015-04-24 41 views
1

我想在通過ssh登錄後在遠程計算機上運行shell腳本。 這是我的代碼。如何在遠程計算機上通過ssh使用jenkins作業運行shell腳本

#!/bin/bash 
USERNAME=user 
HOSTS="172.20.16.120" 

for $ {HOSTS}中的HOSTNAME;做 sshpass -p密碼的ssh -t -t $ {USERNAME} @ $ {HOSTNAME}

echo [QACOHORT-INFO] Space Before clean up 

df -h 

callworkspace() 

{ 
if [ "$?" = "0" ]; 

then 

for i in `ls`; do 

if [ "$1" = "workspace" ] && echo "$i" | grep -q "$VERSION_WS" && [ "$VERSION_WS" != "" ]; 

then 

echo [QACOHORT-INFO] Removing files-in: 
pwd 

rm -rf $i 

echo [QACOHORT-INFO] Removed: $i 

fi 

if echo "$i" | grep -q "wasabi$VERSION_HUDSON" && [ "$VERSION_HUDSON" != "" ]; 

then 
echo [QACOHORT-INFO] Removing files-in $i 

rm -rf $i/* 

elif echo "$i" | grep -q "wasabiSDK$VERSION_HUDSON" && [ "$VERSION_HUDSON" != "" ]; 

then 

echo [QACOHORT-INFO] Removing files-in $i 

#rm -rf $i/* 

fi 

done 

fi 
} 

unamestr=`uname` 

if [ "$unamestr" = "Linux" ]; 

then 

cd /home/jenkin/workspace/Hudson/ 

callworkspace 

cd /home/jenkin/workspace/Hudson/workspace 

callworkspace workspace 

echo [QACOHORT-INFO] Removing temp files 

rm -rf /tmp/tmp* 

rm -rf ~/.local/share/Trash/* 

else [ "$unamestr" = "Darwin" ]; 

cd /Users/ITRU/ws/Hudson/ 

callworkspace 

cd /Users/ITRU/ws/Hudson/workspace 

callworkspace workspace 

echo [QACOHORT-INFO] Removing temp files 

rm -rf /tmp/tmp* 

rm -rf ~/.Trash/* 

fi 

unamestr=`uname -o` 

if [ "$unamestr" = "Cygwin" ]; 

then 

cd D:/work/Hudson 

callworkspace 

cd D:/work/Hudson/workspace 

callworkspace workspace 

fi 


echo [QACOHORT-INFO] Space after clean up 
df -h 
done 
exit 0 

通過ssh登錄後,我需要ssh作爲唯一的shell腳本後運行以下線。我不想將這些行保留在.sh文件中並運行。我需要在詹金斯運行它。誰能幫忙?

+0

請修復代碼identation。在編輯過程中使用'{}' –

回答

1

我建議你遵循以下步驟:

  1. 配置遠程機器從節點。
    • Jenkins提供了節點屬性
    • 轉到節點屬性>環境變量>在那裏,您可以給出配置的名稱和值。我有以下在我的設置:

名:remotemachine1 值:172.20.16.120

名:USERNAME 值:用戶

  • 後您完成了Jenkins節點配置,您可以創建一個Jenkins作業並配置Jenkins作業.Jenkins配置構建步驟提供了「執行Windows批處理命令」,您可以在那裏運行您的shell腳本。請不要忘記在Jenkins作業配置中的「限制可以運行此項目的地方」中指定遠程機器。
  • 如果您有任何其他問題,請讓我知道。

    0

    現在偶然發現了一個類似的問題,你可以嘗試解決這樣說:

    for HOSTNAME in ${HOSTS} ; do 
        sshpass -p password ssh -t -t ${USERNAME}@${HOSTNAME} '(
         pwd 
         ls -l 
         <put your script here> 
        )' 
    done 
    
    相關問題