当前位置: 首页 > 知识库问答 >
问题:

stdin不是Jenkins的tty

咸承教
2023-03-14

我在运行Windows10的笔记本电脑上安装了Jenkins。但是,当我试图运行以下操作时,我将运行SQL Server的Linux容器旋转:

 winpty docker exec -it SQLLinuxnull sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P P@ssword1 -Q 'EXEC sp_configure '\''clr enabled'\'', 1;'

我得到:

stdin is not a tty

当我从powershell会话运行docker exec命令时,它完成时没有任何问题。拖网这个站点得到的答案表明,这可能与Linux容器中使用的需要执行sudo的任何帐户有关,并且我应该修改/etc/sudoers文件,问题是我没有/etc/sudoers文件,根据uname-a这是容器所基于的Linux版本(并不是它的基础是Linux映像中的官方Microsoft SQL server):

# uname -a
Linux f9509a952eae 4.9.49-moby #1 SMP Wed Sep 27 00:36:29 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

有人能证实这是与sudoers有关的问题吗。

共有1个答案

郑俊彦
2023-03-14
docker exec -it

...要求它在具有可用TTY的上下文中运行。如果您可以避免在程序执行过程中稍后需要stdin或终端(例如,在容器中配置/etc/sudoers,禁用requiretty选项),那么您应该可以简单地删除-it标志。

 类似资料:
  • 问题内容: 我正在尝试做一些代码挑战赛,但是所有这些挑战都需要从输入stdin。我如何在Python中得到它? 问题答案: 请注意,这将在末尾包含换行符。要最后删除换行符,请使用所说的。

  • 问题内容: 在配置项过程中登录时出现此错误: 我应该将“ –password”替换为“ –password-stdin”吗? 问题答案: 根据Docker文档: 要以非交互方式运行docker login命令,可以将 标志设置为通过STDIN提供密码。使用STDIN可以防止密码出现在shell的历史记录或日志文件中。 以下示例从文件读取密码,然后使用STDIN将其传递给docker login命令

  • 问题内容: 我试图编写一个Shell脚本,该脚本在远程服务器上创建一些目录,然后使用scp将文件从本地计算机复制到远程服务器上。这是我到目前为止的内容: 每当我运行它时,我都会收到以下消息: 脚本将永远挂起。 我的公钥在服务器上是受信任的,我可以在脚本之外运行所有命令。有任何想法吗? 问题答案: 尝试(或简称)强制伪tty分配,即使stdin不是终端。 从ssh联机帮助页:

  • 问题内容: 我正在尝试使用ssh连接到一台计算机,然后使用ssh连接到另一台计算机。但是得到这个错误: 问题答案: 登录到外壳程序时,远程主机假定连接是由人类用户完成的。因此,可以合理地期望他们可以控制客户端上的 标准 。也就是说,用户正在通过键盘在终端上进行输入。如果远程主机检测到用户不是人类用户(因为输入的不是终端- tty,而是另一个进程),它可能会警告用户有关此意外情况。 讨论过的不当行为

  • 将macOS升级到Sierra后,当我使用launchctl load启动Jenkins时,我无法连接到localhost:8080。如果我再次调用launchctl load,我会看到响应“服务已加载”。默认位置/var/log/jenkins/(如jenkins ci.plist中设置的)没有日志文件。我还试图创造詹金斯。在那里登录并发送给jenkins用户,但仍然没有打印任何内容。 如果我尝

  • 问题内容: 对詹金斯来说还很新,我有一个简单而烦人的问题。当我在Jenkins上运行作业(构建)时,我触发ruby命令执行我的测试脚本。 问题是Jenkins没有从控制台实时显示输出。这是触发日志。 基本上,它会挂在此输出上,直到构建完成为止,而不是仅仅显示完整的输出。有趣的是,这不是一致的行为,有时它可以正常工作。但是大多数时候没有实时控制台输出。 詹金斯版本:1.461 问题答案: 为了澄清一