首页 > 解决方案 > Laravel Envoy 到 SSH 进入堡垒服务器,然后,SSH 进入单独的私有 Web 服务器,stdout 被拆分为新行

问题描述

我们的基础设施/挑战很有趣,我在网上或其他 SO 问题上找不到任何太相关的东西。

我们的build服务器与我们的私有网络服务器位于不同的 VPC 中。所以build>web server是不可能的。我在本地使用两个 VirtualBox VM 进行概念验证,那里没有问题。使用两个虚拟机在本地一切正常。

我们的部署将是build> bastion> webserver

我正在研究一些将由 GitLab 的 CI 触发的 Envoy 脚本,其中:

虚拟机1 Envoy.blade.php

@task('deploy:code', ['on' => 'web'])
    ssh ubuntu@10.0.2.15 -p 22 -tt
    /home/ubuntu/deploy.sh
@endtask

虚拟机2 deploy.sh

$ cat deploy.sh
echo "hello!"

本地主机命令:

 envoy run deploy:code --a=a --b=b --c=c

输出:

[ubuntu@127.0.0.1 -p 10022]: /home/ubuntu/deploy.sh
[ubuntu@127.0.0.1 -p 10022]: Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-193-generic x86_64)
[ubuntu@127.0.0.1 -p 10022]: * Documentation:  https://help.ubuntu.com
[ubuntu@127.0.0.1 -p 10022]: * Management:     https://landscape.canonical.com
[ubuntu@127.0.0.1 -p 10022]: * Support:        https://ubuntu.com/advantage
[ubuntu@127.0.0.1 -p 10022]: 105 packages can be updated.
[ubuntu@127.0.0.1 -p 10022]: 86 updates are security updates.
[ubuntu@127.0.0.1 -p 10022]: New release '18.04.5 LTS' available.
[ubuntu@127.0.0.1 -p 10022]: Run 'do-release-upgrade' to upgrade to it.
[ubuntu@127.0.0.1 -p 10022]: Last login: Fri Aug 27 15:51:11 2021 from 10.0.2.15
[ubuntu@127.0.0.1 -p 10022]: ubuntu@ubuntu:~$
[ubuntu@127.0.0.1 -p 10022]: ubuntu@ubuntu:~$ /h
[ubuntu@127.0.0.1 -p 10022]: ome
[ubuntu@127.0.0.1 -p 10022]: /ub
[ubuntu@127.0.0.1 -p 10022]: un
[ubuntu@127.0.0.1 -p 10022]: tu/
[ubuntu@127.0.0.1 -p 10022]: depl
[ubuntu@127.0.0.1 -p 10022]: oy.
[ubuntu@127.0.0.1 -p 10022]: sh
[ubuntu@127.0.0.1 -p 10022]: hello!
[ubuntu@127.0.0.1 -p 10022]: ubuntu@ubuntu:~$

谁能建议我不能将输出拆分为多行的方法,而只是hello!在欢迎消息/MOTD 之后回显,和/或不将输出拆分为多行?

标签: laravelbashstdoutstdinlaravel-envoy

解决方案


星期一早上新鲜的眼睛把我带到了这里:

https://unix.stackexchange.com/questions/572412/when-running-local-script-on-remote-server-via-multiple-ssh-script-is-split-int

更换

ssh ubuntu@10.0.2.15 -p 22 -tt

ssh ubuntu@10.0.2.15 -p 22 -t

引起:

不会分配伪终端,因为 stdin 不是终端。

后来厚颜无耻的搜索,建议-t改为-T

https://appuals.com/fix-pseudo-terminal-will-not-be-allocated-because-stdin-is-not-a-terminal/

ssh ubuntu@10.0.2.15 -p 22 -T

成功了

[ubuntu@127.0.0.1 -p 10022]: Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-193-generic x86_64)
[ubuntu@127.0.0.1 -p 10022]: * Documentation:  https://help.ubuntu.com
[ubuntu@127.0.0.1 -p 10022]: * Management:     https://landscape.canonical.com
[ubuntu@127.0.0.1 -p 10022]: * Support:        https://ubuntu.com/advantage
[ubuntu@127.0.0.1 -p 10022]: 105 packages can be updated.
[ubuntu@127.0.0.1 -p 10022]: 86 updates are security updates.
[ubuntu@127.0.0.1 -p 10022]: New release '18.04.5 LTS' available.
[ubuntu@127.0.0.1 -p 10022]: Run 'do-release-upgrade' to upgrade to it.
[ubuntu@127.0.0.1 -p 10022]: hello!

推荐阅读