【问题标题】:Use oc rsh to run for loop in container (openshift remote ssh)?使用 oc rsh 在容器中运行 for 循环(openshift 远程 ssh)?
【发布时间】:2019-11-27 08:35:09
【问题描述】:

基于:

https://unix.stackexchange.com/questions/1459/remote-for-loop-over-ssh

我正在尝试通过oc rsh 运行 for 循环命令,但它失败并出现以下错误:

$ oc rsh my-app-10-lprki 'for i in /var/lib/*; do echo $i; done'
exec failed: container_linux.go:345: starting container process caused "exec: \"for i in /var/lib/*; do echo $i; done\": stat for i in /var/lib/*; do echo $i; done: no such file or directory"
command terminated with exit code 1

我也试过不带引号,带双引号,但也失败了。

这很好用(不带引号):

$ oc rsh my-app-10-lprki ls -la /var/lib/
total 24
drwxr-xr-x.  1 root       root   104 Nov 22 22:21 .
drwxr-xr-x.  1 root       root    17 Sep 28  2017 ..
drwxr-xr-x.  2 root       root    44 Sep 28  2017 alternatives

关于如何通过oc rsh 远程运行 for 循环的任何建议(目前失败):

oc rsh my-app-10-lprki 'for i in /var/lib/*; do echo $i; done'

?

根据以下建议,我也尝试过:

$ oc rsh my-app-10-lprki -- /bin/sh  -c  'for i in `ls  /var/lib`; do echo $i; done'
exec failed: container_linux.go:345: starting container process caused "exec: \"--\": executable file not found in $PATH"
command terminated with exit code 1

和:

$ oc rsh my-app-10-lprki -- /bin/bash  -c  'for i in `ls  /var/lib`; do echo $i; done'
exec failed: container_linux.go:345: starting container process caused "exec: \"--\": executable file not found in $PATH"
command terminated with exit code 1

和:

$ oc rsh my-app-10-lprki -- /usr/bin/bash  -c  'for i in `ls  /var/lib`; do echo $i; done'
exec failed: container_linux.go:345: starting container process caused "exec: \"--\": executable file not found in $PATH"
command terminated with exit code 1

地点:

$ oc rsh my-app-10-lprki which bash
/usr/bin/bash

【问题讨论】:

  • 嗨,你可以试试oc rsh my-app-10-lprki -- bash -c "for i in /var/lib/*; do echo $i; done"
  • 这给出:执行失败:container_linux.go:345:启动容器进程导致“exec:\”--\“:$PATH中找不到可执行文件”
  • 使用 /bin/bash or /bin/sh 而不是 bash,具体取决于容器中的外壳。
  • 你能描述一下你的 pod oc describe pod $POD_NAME 假设它正在运行
  • 你是从windows执行命令吗?

标签: openshift rsh


【解决方案1】:

这成功了:

oc exec my-app-10-lprki -- bash -c 'for i in /var/lib/; do echo $i; done'

【讨论】:

  • 很高兴,它成功了。很奇怪它不适用于rsh。可能是一个错误。
【解决方案2】:

假设 /bin/sh 容器中的外壳

oc rsh my-app-10-lprki -- /bin/sh  -c  'for i in `ls  /var/lib`; do echo $i; done'

将列出/var/lib目录中的文件

这里是 mysql pod 的例子

[suresh.vishnoi@blah ~]$ oc exec  mysql-4-lnlpx --  /bin/sh  -c  'for i in `ls  /var/lib`; do echo $i; done'
alternatives
dbus
games
initramfs
machines
misc
mysql
rhsm
rpm
rpm-state
selinux
systemd
yum

【讨论】:

  • 你能 rsh 进入 pod 并运行 echo "$SHELL"which shwhich bash 吗?
  • 是的,我看到了我更新的帖子。但看起来它在使用 exec 并且参数略有不同时可以工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 2019-11-14
  • 2019-02-27
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多