在项目中布置测试环境,需要用 jenkins的ssh插件通过跳板机访问到目标主机(图1)。
尝试了jump host相关的配置,没有成功。 之后发现只使用ssh命令就可以做到,把设置过程
以及遇到坑做了个小结,希望能对大家有用。
1. ssh命令前置知识
其实整个过程中最核心的是 ssh 命令相关知识,可以参考以下链接,建议认真的看完。
https://www.cnblogs.com/z-books/p/7453053.html
另外这一类符号也需要了解: $() `
https://www.cnblogs.com/lidabo/p/6394523.html
2. jenkins任务中添加ssh插件
3. ssh插件中编写脚本
这里的例子使用单引号的方式,在ssh中执行多个命令,来修改远端主机上zip_info.csv 中特定字符串。
--------------------------------------------------------------------------------------
ssh 192.168.0.226 '
newaddress="http://192.168.0.211/testFile/${foldername}/"
cd /home/root/server_test
oriaddress=$(awk -F "," '"'"'{if (NR==2){print $4}}'"'"' data/resourcedata/zip_info.csv)
result=$(sed -i "s|$oriaddress|$newaddress|" data/resourcedata/zip_info.csv)
echo $result
'
--------------------------------------------------------------------------------------
注意点:
- 在ssh 单引号中使用单引号,相应字符串为: '"'"'
- 如果命令中没有$() 等符号,使用EOF 也可以,
例:
--------------------------------------------------------------------------------------
#开始
ssh 192.168.0.226 <<EOF
exit
#结束
EOF
--------------------------------------------------------------------------------------
以上是在jenkins中配置通过跳板机在目标主机执行命令的一种方式,另外利用jenkins的配
置构造跳板机的方式我没有试验成功(jump host?),查了网上相关资料并不是太多,可能
是太过简单没人写。由于本职工作是码代码,这方面不太专业,有更好的做法欢迎一起讨论。