运行 "sudo su" 在 gitlab 管道中
Running "sudo su" within a gitlab pipeline
我已经在我的 gitlab 运行ner SSH 连接到的服务器上安装了一些软件,其中一个命令在执行 sudo su
之后需要 运行。如果我 运行 作为普通用户使用它,但在它前面加上 sudo
- 它不起作用。我必须首先完全切换到 sudo 用户。
当我通过 SSH 连接到服务器并手动执行命令时,这工作正常。但是当我从管道中尝试时(下面的粗略代码):
my_script:
stage: stage
script:
- ssh -o -i id_rsa -tt user@1.1.1.1 << EOF
- sudo su
- run_special_command <blah blah>
- exit
# above exits from the SSH. below should stop the pipeline
- exit 0
- EOF
我得到非常奇怪的输出,如下所示:
$ sudo su
[user@1.1.1.1 user]$ sudo su
echo $'\x1b[32;1m$ run_special_command <blah blah>\x1b[0;m'
run_special_command <blah blah>
echo $'\x1b[32;1m$ exit\x1b[0;m'
exit
echo $'\x1b[32;1m$ exit 0\x1b[0;m'
exit 0
echo $'\x1b[32;1m$ EOF\x1b[0;m'
我看到的是它甚至 运行 根本没有命令 - 我不明白为什么。
在这种情况下,您需要将脚本作为多行字符串放入 YAML 中。或者,将 shell 脚本提交到 repo 并执行它。
and one of the commands needs to be run after doing sudo su. If I run it as a regular user, but with sudo in front of it - it doesn't work.
作为旁注,您可以在命令前使用 sudo -E
而不是 sudo su
。但是你所拥有的也应该适用于多行脚本。
MyJob:
script: |
ssh -o -i id_rsa -tt user@host << EOF
sudo -E my_command
EOF
exit 0
或者,将您的脚本写入 shell 提交到存储库的脚本(设置了可执行权限),然后 运行 从您的作业中获取它:
MyJob:
script: “my_script.sh”
我已经在我的 gitlab 运行ner SSH 连接到的服务器上安装了一些软件,其中一个命令在执行 sudo su
之后需要 运行。如果我 运行 作为普通用户使用它,但在它前面加上 sudo
- 它不起作用。我必须首先完全切换到 sudo 用户。
当我通过 SSH 连接到服务器并手动执行命令时,这工作正常。但是当我从管道中尝试时(下面的粗略代码):
my_script:
stage: stage
script:
- ssh -o -i id_rsa -tt user@1.1.1.1 << EOF
- sudo su
- run_special_command <blah blah>
- exit
# above exits from the SSH. below should stop the pipeline
- exit 0
- EOF
我得到非常奇怪的输出,如下所示:
$ sudo su
[user@1.1.1.1 user]$ sudo su
echo $'\x1b[32;1m$ run_special_command <blah blah>\x1b[0;m'
run_special_command <blah blah>
echo $'\x1b[32;1m$ exit\x1b[0;m'
exit
echo $'\x1b[32;1m$ exit 0\x1b[0;m'
exit 0
echo $'\x1b[32;1m$ EOF\x1b[0;m'
我看到的是它甚至 运行 根本没有命令 - 我不明白为什么。
在这种情况下,您需要将脚本作为多行字符串放入 YAML 中。或者,将 shell 脚本提交到 repo 并执行它。
and one of the commands needs to be run after doing sudo su. If I run it as a regular user, but with sudo in front of it - it doesn't work.
作为旁注,您可以在命令前使用 sudo -E
而不是 sudo su
。但是你所拥有的也应该适用于多行脚本。
MyJob:
script: |
ssh -o -i id_rsa -tt user@host << EOF
sudo -E my_command
EOF
exit 0
或者,将您的脚本写入 shell 提交到存储库的脚本(设置了可执行权限),然后 运行 从您的作业中获取它:
MyJob:
script: “my_script.sh”