Ssh

當命令返回不同於 0 的退出狀態時,SSH 連接自動關閉

  • September 10, 2017

當我在我的 VPS 伺服器上執行返回非 0 退出狀態的命令(例如:grep、cat、…)時,我的 SSH 連接會自動關閉。我不知道這個問題可能涉及什麼……

您是否已經嘗試過此類問題?有什麼建議嗎?


特此對該問題進行展示:

  1. 我從我的電腦連接到我的 VPS 伺服器:sylvain@mycompute
sylvain@mycomputer:~$ ssh myuser@vps-server
Last login: Sat Sep  9 17:02:30 2017 from 11.22.33.44
myuser@vps-server:~$ 

2)我創建了一個從第一個參數獲取退出狀態的腳本:

myuser@vps-server:~$ chmod u+x /tmp/test-exit-status.sh 
myuser@vps-server:~$ cat /tmp/test-exit-status.sh
#!/bin/bash

echo "Exit status will be '$1'."
exit $1
  1. 當退出狀態為 0時,保持 SSH 連接:
myuser@vps-server:~$ /tmp/test-exit-status.sh 0
Exit status will be '0'.
myuser@vps-server:~$ 

4)當退出狀態為NOT 0(例如56)時,SSH連接自動關閉,在我的電腦上,SSH命令的退出狀態是腳本的退出狀態:

myuser@vps-server:~$ /tmp/test-exit-status.sh 56
Exit status will be '56'.
Connection to vps-server closed.

sylvain@mycomputer:~$ echo $?
56

聽起來好像你set -e~/.bashrc

嘗試做set +e並重新執行你的測試,看看它是否再次做同樣的事情。

我會考慮在您的文件中明確添加set +e(或刪除 a set -e~/.bashrc以永久修復它。

引用自:https://serverfault.com/questions/872835