如何通过带有concourse的ssh将命令发送到远程系统

BPS

我需要使用位于Ubuntu 18.04机器上的控制台启动Java Rest服务器。我公司使用的大厅版本为5.5.11。服务器代码是用Java编写的,因此java -jar <uber.jar>从命令行即可轻松实现(请参见下文)。在生产中,我不会有这种简单的奢侈,因此是我的问题。

我有一个scp命令可以将.jar从concourse复制到目标Ubuntu计算机:

scp -i /tmp/key.p8 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ./${NEW_DIR}/${ARTIFACT_NAME}.${ARTIFACT_FILE_TYPE} ${SRV_ACCOUNT_USER}@${JAVA_VM_HOST}:/var/www

请注意,我的私钥是通过-i传递的,我可以确认它是否正常工作。

我遵循了似乎很有希望的其他SO Q&A:通过ssh在目标计算机上在后台执行命令,但是尝试对建议的解决方案和其他答案进行了一些排列之后,我仍然没有启动剩余服务。

我已经在我的主题脚本中尝试过此行的一些排列:

ssh -f -i /tmp/pvt_key1.p8 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SRV_ACCOUNT_USER}@${JAVA_VM_HOST} "bash -c 'nohup java -jar /var/www/${ARTIFACT_NAME}.${ARTIFACT_FILE_TYPE} -c \"/opt/testcerts/clientkeystore\" -w \"password\" > /dev/null 2>&1 &'"

我已经尝试过在ssh中使用-f和-t开关,以及不使用-f和-t开关,使用和不使用文件流重定向,使用和不使用nohup以及Linux背景('&')命令以及各种转义引号的方法。

在bash提示符下,此行成功启动了我的服务器。需要使用两个开关来指向证书并提供密码:

java -jar rest-service.jar -c "/opt/certificates/clientkeystore" -w "password"

我确实认为在Concourse中可以做到这一点,但是我仍然停留在这一点上。

BPS

经过大量尝试后出现错误,看来我需要这样做:

ssh -f -i /tmp/pvt_key1.p8 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ${SRV_ACCOUNT_USER}@${JAVA_VM_HOST} "bash -c 'sudo java -jar /var/www/${ARTIFACT_NAME}.${ARTIFACT_FILE_TYPE} -c \"/path/to/my/certificate\" -w \"password\" > /var/www/log.txt 2>&1 &'"

关键是我缺少命令的“ sudo”部分。使用nohup而不是放入Linux bash背景指示符('&')似乎给我一个错误。这对我有用,但也欢迎其他人发布答案,提供更好的答案或更好的做法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在远程系统上使用ssh将命令发送到后台

通过SSH将按键发送到远程X会话

通过 Java 将命令从 Windows 远程发送到 Linux

如何通过ssh将本地变量发送到远程服务器

如何通过SSH将SIGINT(Ctrl-C)发送到当前远程进程(不带-t选项)

如何将日志条目发送到运行日记(系统)的远程服务器

如何通过管道将命令发送到 grep 并获取退出状态,同时仍将命令输出发送到 stdout 并将错误发送到 stderr?

如何从远程SSH会话将数据发送到本地剪贴板

通过ssh发送到主机的命令的返回状态

如何通过带有CDATA中的CDATA的SOAP UI将请求发送到Java应用程序?

如何通过GELF将Spring Boot访问日志发送到远程服务器?

终端大小更改如何通过ssh或telnet发送到命令行应用程序?

如何将进程的输出通过管道发送到logger命令和head命令?

运行命令,将输出发送到带有stderror颜色的邮件

通过带有cURL的HTTP Post将XML字符串发送到Web服务

通过网络将鼠标命令发送到具有Raspberry Pi的PC

如何将带有参数的命令发送到GNU parallel?

如何通过管道将stderr发送到stdout到另一个命令?

ssh协议是否将远程名称发送到远程计算机?

如何使用带有TCPDF的php将文件内联发送到浏览器

如何将命令发送到tmux中的所有窗格?

如何将每个命令发送到Emacs Term?

如何将stdout发送到多个命令?

如何将终端命令发送到TTY终端

如何将heredoc命令发送到后台?

如何将数组元素发送到命令的stdin?

如何将命令发送到特定的终端窗口?

如何通过Ajax将数据发送到Java Servlet

如何通过AJAX将数据发送到Flask?