【问题标题】:gcloud compute ssh --command flag not workinggcloud compute ssh --command 标志不起作用
【发布时间】:2022-01-04 11:01:31
【问题描述】:

我正在使用来自计算引擎 vm1 的 google 计算 ssh 命令来连接另一个项目的 vm2。当我尝试使用 --command 标志连接时会出现问题。不执行 shell 命令,但建立了 ssh 连接。但是我可以在 vm2 的进程中看到 bash 命令为 pid =xxxx 'bash -c sudo su && service nginx stop && source /home/x/bin/activate && python example.py' 当我从 vm1 终止 ssh 命令时,bash 命令立即在 vm2 上启动。我无法弄清楚是什么导致了这个问题。

sudo gcloud compute ssh --project=project_name vm_name --zone=zone --command='sudo su && service nginx stop && source /home/x/bin/activate && python example.py'

操作系统:ubuntu 18.04

【问题讨论】:

  • 嗨 zeo,据我所知,命令应该如下所示:sudo gcloud compute ssh --project project_name vm_name --zone zone --command 'sudo su && service nginx stop && source /home/x/bin/activate && python example.py' 尝试在没有= 字符的情况下执行此命令
  • 感谢您的回答 Andrii,但在我终止 ssh 连接之前仍然无法正常工作。
  • 删除sudo su,并在必要的命令前加上sudo

标签: bash google-cloud-platform google-compute-engine gcloud


【解决方案1】:

该命令集不起作用。您正在接近它,就好像您是在终端中运行命令的人一样,在这种情况下:

  • sudo su(会给你一个 root shell,所有后续命令都将以 root 身份运行)
  • service nginx stop(你是 root)
  • source /home/x/bin/activate(你是 root)
  • python example.py(你是 root)

当您尝试使用&& 链接您的命令时,它会在第一个命令运行后运行下一个命令,并且所有命令实际上都在像您一样运行:

  • sudo su(你自己运行,成功退出后触发下一条命令)
  • service nginx stop(和你一样)
  • 等(如你)

所以最终发生的事情是你得到一个 root shell,然后什么也没有。除非它(干净地)退出,否则您将不会运行链中的下一个命令,因此您正在等待,因为 root shell 也在等待。正如上面提到的@DazWilkin,你实际上应该做的是删除sudo su(你不需要root shell,你不能在那里做任何事情)并在你的其他命令前面加上sudo,这样它们都以提升的烫发率运行。

【讨论】:

  • 非常感谢 Glen Yu 和 @DazWilkin。
猜你喜欢
  • 1970-01-01
  • 2020-05-11
  • 2020-12-08
  • 2018-03-01
  • 2019-12-20
  • 2016-07-03
  • 2021-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多