我在这样的远程机器上运行一个脚本:
ssh $host "pip install -r /path/to/requirements.txt"
Run Code Online (Sandbox Code Playgroud)
但输出不是行缓冲的;不是一次返回一行,而是在连接终止时一次性打印所有行 (~10)。
这是怎么回事?有没有办法强制它们被行缓冲?
(另外,声明一下:当我通过 ssh 进入$host并“手动”运行命令时,输出是行缓冲的,正如预期的那样)
是否可以测试是否使用 bash 脚本执行-x?
我正在编写一个还运行一些远程脚本的脚本,我希望能够执行以下操作:
USE_X="$( run_with_x && "-x" || "" )"
ssh $host "bash $USE_X some_script.sh"
Run Code Online (Sandbox Code Playgroud) 我经常会通过 SSH 连接到另一台计算机,并且希望将文件下载到本地计算机上,而无需打开新的终端和 scp。例如,这样的事情:
\n\nlocal $ ssh remote\nremote $ ls\nremote_file\nremote $ download remote_file\n\xe2\x80\xa6\nremote $ ^D\nlocal $ ls\nremote_file\nRun Code Online (Sandbox Code Playgroud)\n\n有没有办法 \xe2\x80\x94 甚至是一个可怕的 hack \xe2\x80\x94 让我在通过 SSH 连接到远程主机时下载文件,而不使用 SCP?
\n\n我考虑过使用一些技巧,例如$SSH_CLIENT,但是当我的本地计算机位于 NAT 之后(基本上一直如此)时,这将不起作用。
我在使用 SSH + Bash + Terminal.app 时遇到了一个奇怪的问题:当 SSH 在后台运行时,shell 似乎在大约 50% 的时间内随机丢失按键。
例如,如果我运行:
$ ssh -N my-tunnel &
$ # typing becomes lossy
Run Code Online (Sandbox Code Playgroud)
然后输入“asdf”,只有字母“a”和“f”可能会出现(尽管这是随机的并且部分与打字速度相关;如果我全速打字,可能只会出现“f”)。
此问题仅影响外壳。例如,如果我运行 ,ssh -N my-tunnel & cat字符将按照 cat 的预期进行回显。一旦猫被杀死,按键就会丢失,我又回到了外壳。
其他注意事项:
nohup ssh -N my-tunnel &不会改变任何东西那么:这是怎么回事?有什么方法可以在不破坏终端的情况下在后台进行 ssh 操作吗?