通过ssh登录后,我想在远程计算机上运行shell脚本。
这是我的代码。

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

为$ {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文件中并运行。我需要在 Jenkins 中运行它。有人可以帮忙吗?

最佳答案

我建议您遵循以下步骤:

  • 将远程计算机配置为从节点。
  • Jenkins提供Node属性
  • 转到“节点属性”>“环境变量”>,您可以在其中提供配置的名称和值。我的设置中包含以下内容:

  • 名称:remotemachine1
    值(value):172.20.16.120

    名称:USERNAME
    值:用户
  • 完成Jenkins Node配置后,您可以创建Jenkins Job并配置JenkinsJob。Jenkins配置Build步骤提供“Execute Windows batch command”,您可以在其中运行shell脚本。请不要忘记在Jenkins作业配置中的“限制可以在哪里运行该项目”步骤中指定您的远程计算机。

  • 如果您还有其他具体问题,请告诉我。

    08-04 15:32