如何在Jenkins执行命令中使用sudo命令

12 浏览
0 Comments

如何在Jenkins执行命令中使用sudo命令

我正在使用Jenkins来运行我的构建。

其中一个步骤是使用sudo将某些文件复制并放置在/etc/init目录下。

${host-used}返回www-data@ip-address

问题出在第二个命令上。

当我运行第一个命令时,我可以在Jenkins的控制台日志中看到我的结果打印出来。

对于第二个命令,我得到一个no tty present的消息。

所以我将第二个命令改成了

我得到了一个

 Pseudo-terminal will not be allocated because stdin is not a terminal

我该如何解决这个问题?

更新:

我也尝试过这个。

我得到了:

bash: www-data@ipaddress: command not found
Connection to ipaddress closed.

我想强调的是命令使用是正确的。但是我无法读取消息。


更新2:

有时候你问一个问题,但是后来你意识到你想要问的问题并不是你想要解决的真正问题。

这个问题就是这样。

我只是想执行一些在Jenkins中运行的命令,并查看这些命令的打印输出。这些命令恰好需要sudo。

Jenkins基本上是以另一个用户www-data的身份进行ssh来执行这些命令。

我在打印出那些需要sudo的命令在Jenkins中的结果方面遇到了麻烦。

在周六愉快地花时间研究了一些非常有帮助的stackoverflow答案之后,我意识到我可以尝试以root用户身份进行ssh来执行这些命令,而不是使用sudo。

这样做起作用了。

我将使用这种方法来回答这个问题,因为我只是想要执行一些Jenkins中的命令并查看它们的打印输出。

0
0 Comments

问题原因:Jenkins无法在使用交互式账户连接时执行sudo命令。这可以通过将sudoer设置为非交互式来解决。

解决方法:尝试在目标Linux系统上运行以下命令:

echo "%sudo ALL=(ALL) NOPASSWD: *command*" >> /etc/sudoers

应该使用sudo visudo命令编辑sudoers文件。

0
0 Comments

问题的原因是在使用Jenkins的exec命令时,sudo命令无法正常运行。这可能是因为通过ssh登录的用户没有可用的命令。错误信息显示连接成功,但无法运行命令并断开连接。可能是因为在Jenkins脚本中缺少一些环境变量,而在正常的ssh登录中,这些变量是定义好的并获得会话。

解决方法可以尝试以下几种方式:

1. 使用完整路径来执行命令,确保sudo命令没有问题。

2. 使用sudo命令时加上"-i"选项,以使用root的配置文件,并切换到正确的目录下。

3. 编写一个shell脚本,在脚本中使用sudo命令,并执行需要的操作。在Jenkins的Web界面上使用"execute shell script"选项来调用这个脚本。

这里提供了一段示例的shell脚本代码,可以根据实际情况修改主机名和路径:

#!/bin/bash
function ssh_and_run_cake() { 
 echo "Working on $hostname --- $instance --::"
 $ssh -t $hostname "sudo su -i '
    echo \"CD Folder run cake init -----------------\";
    cd /path/to/cakephp/app; 
    Console/cake init_runners copy_runners_into_initd;
    echo \"All done------------------------\";
 '";
}
function rollout_cake() {
   #for hostname in ${h[@]}; do
        hostname="yourhost"
        ssh_and_run_cake
  # done
}
rollout_cake

需要注意的是,脚本需要放在Jenkins服务器的本地文件系统上,并在Jenkins的Web界面上配置执行Shell脚本的选项,指定脚本的完整路径。

,问题的原因是在Jenkins的exec命令中无法正确使用sudo命令,可能是由于缺少环境变量的原因。解决方法包括使用完整路径来执行命令、使用sudo命令时加上"-i"选项来切换到正确的目录,或者编写一个shell脚本来使用sudo命令并执行需要的操作。

0
0 Comments

问题的出现原因是在Jenkins的exec命令中使用sudo命令时出现了问题。解决方法是尝试不使用-d选项来运行screen命令,并只使用-m选项。另外,还可以尝试在ssh命令中不重复指定主机。如果仍然存在问题,可以尝试其他不同的方法来解决。

0