我有一个用于打包应用程序的 shell 脚本。此脚本一旦执行,就会要求输入 SVN_USER 和 SVN_PASSWORD。然后将它们导出到系统,然后运行打包命令。
问题是,我想通过 ssh 从 Jenkins 执行该脚本。
换句话说,我需要一种方法来在内联命令中注入我的用户名和密码。
(我没有权限编辑脚本,所以我不能使用 $1 $2 并将它们作为参数传递,脚本只接受这两个变量作为表单输入)。
我试过 :
- 导出 SVN_USER=foo
- 导出 SVN_PASSWORD=bar
- ssh -o StrictHostKeyChecking=no[电子邮件保护]‘sh /base/myscript.sh 应用程序名称’
--> 连接正常,脚本启动,要求输入用户名和密码,但由于没有收到所需的信息而执行失败。
感谢您的帮助
答案1
我认为能够做到这一点的唯一方法是通过在远程命令字符串中设置环境。
ssh -o StrictHostKeyChecking=no [email protected] 'SVN_USER=foo SVN_PASSWORD=bar sh /base/myscript.sh appname'
尽管 SSH 提供了一个SendEnv
选项,原则上允许您将环境设置从本地传递到远程,但这依赖于AllowEnv
远程sshd_config
文件中的相应设置:至少在 Ubuntu 中,默认值仅允许与语言环境相关的环境设置,即
SendEnv LANG LC_*
和
AcceptEnv LANG LC_*