Last Updated on 2021-06-28 by Clay
在 Linux 環境中,我們經常都會寫許多自動化執行的腳本幫助我們處理各式各樣的工作。今天,我就需要在一台『本機端』的主機中自動登入遠方『伺服器』並在『伺服器上執行指令』。
這件事我本來以為會有點麻煩,結果上網一查,簡單地超乎我想像。紀錄如下。
SSH 登入遠端伺服器並執行指令
首先,我們登入遠方伺服器的指令為:
ssh user_name@remote_server_ip
那麼,如果我要在伺服器上運行指令呢?比方說,以基本的 "ls" 為例:
ssh user_name@remote_server_ip "ls"
Output:
如何,是不是很方便呢?
如果需要執行多項指令,則可以使用 "&&" 分隔指令。
值得一提的是,我在使用 VIM 上遇到了問題。
ssh user_name@remote_server_ip "vim test.py"
Output:
Vim: Warning: Output is not to a terminal
Vim: Warning: Input is not from a terminal
然後糟糕的是,我在 VIM 編輯器中甚至沒辦法退出。上網一查之後才發現,若是需要能夠互動 (包含 htop 在內的樣子) 都需要加上 "-t" 的參數。
ssh -t user_name@remote_server_ip "vim test.py"
Output:
果然正常了。
References
- https://www.cyberciti.biz/faq/unix-linux-execute-command-using-ssh/
- https://www.cyberciti.biz/faq/linux-unix-osx-bsd-ssh-run-command-on-remote-machine-server/