2015-04-24 38 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 
    
    相关问题