【发布时间】:2018-09-01 20:15:04
【问题描述】:
我创建了一个管道并希望在多个服务器上运行一个 shell 脚本,我正在从一个 txt 文件中读取服务器列表,我编写了代码来迭代该列表并为该列表中的每个服务器运行 shell 脚本。
问题是循环没有超过第一次执行。如果我只打印服务器名称而不执行 ssh 命令,它会打印所有服务器名称,这意味着循环工作正常,但不能按预期使用 ssh 命令工作。我也试过 for 循环,但同样的问题。
stage('execute script') {
steps {
script {
....some code here
def absoluteFilePath = "${WORKSPACE}/serversList.txt"
def fileContent = readFile(absoluteFilePath)
listOfServers = fileContent.split('\n')
}
iterateOverList(listOfServers, "${WORKSPACE}/")
}
}
@NonCPS
def iterateOverList(list, workSpacePath) {
//iterate over servers list and execute shell script on it.
list.each { hostServer ->
sh "ssh -t -o StrictHostKeyChecking=no -o 'UserKnownHostsFile /dev/null' -i /var/lib/user/.ssh/id_rsa user@${hostServer} 'sudo bash -s' < ${workSpacePath}myShellScript.sh"
}
}
【问题讨论】:
标签: bash jenkins ssh jenkins-pipeline