linux - 从 Jenkins 中运行的脚本通过远程 ssh 将文件内容分配给变量

标签 linux ssh jenkins cat assign

我已经从脚本打开了远程 ssh session ,并且在远程服务器上有一个包含版本信息的文件。 我正在尝试将该版本分配给变量并将当前版本内容移动到与版本相同的文件夹名称。

主要脚本在jenkins中运行

我正在做这样的事情

ssh -i /home/user/.ssh/id_rsa -t -t remoteServer<<EOF
cd $WEB_DIR
VERSION=$(cat $WEB_DIR/version.info)
mv -f $WEB_DIR $BACKUP_DIR/$VERSION
exit
EOF

我的 VERSION 变量始终为空。当我在该服务器上本地运行相同的内容时,它会给我版本值。脚本中的远程 ssh session 有所不同

最佳答案

实际上我找到了分两步完成的方法。

$WEB_DIR 设置为主脚本中的局部变量集。

$WEB_DIR="/usr/local/tomcat/webapps/ROOT"

OLD_VERSION=$(ssh -i /home/user/.ssh/id_rsa -tt user@remoteServer "cat $WEB_DIR/version.info")

ssh -i /home/user/.ssh/id_rsa -t -t user@remoteServer<<EOF
cd $WEB_DIR
mv -f $WEB_DIR $BACKUP_DIR/$OLD_VERSION
# I am executing more commands in here
exit
EOF

如果想使用局部变量,则必须在第一个命令中使用双引号“”。

关于linux - 从 Jenkins 中运行的脚本通过远程 ssh 将文件内容分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25431216/

相关文章:

linux - 当我在脚本中使用它时,无法关闭带有 echo "^]"的 scpi(telnet) session

linux - 如何在我分发的包中使用 git

linux - 配备内核3.2.0-29的Ubuntu 12.04有cgroup支持吗?

ssh - 在SSH中使用SSH服务器和vi编辑器,如何复制代码行并粘贴到记事本中

ssl - 如何让 waitForQualityGate() 函数与 https sonarqube 实例一起使用?

linux - 如果复制失败,Jenkins 管道会跳过阶段

linux - 为什么有些回调函数不能在Pin中调用?

git - 在GITLAB上为git用户提供交互式服务

git - 无法通过 SSH 克隆

Jenkins 管道 - 如何动态给出选择参数