Linux

Linux 透過 SSH 連線在遠端執行本地端指令稿教學與範例

介紹如何在 Linux 中透過 SSH 連線到遠端主機後,執行本地端的指令稿。

SSH 連線執行本地端指令稿

若要透過 SSH 連線至遠端主機,並執行本地端的指令稿,可以使用以下指令:

# 連線至 192.168.0.1 遠端主機,並執行本地端的 local_script.sh 指令稿
ssh user@192.168.0.1 bash < local_script.sh

這是另外一種寫法,功能完全相同:

# 連線至 192.168.0.1 遠端主機,並執行本地端的 local_script.sh 指令稿
cat local_script.sh | ssh user@192.168.0.1 bash

sudo 權限執行指令稿

如果在 local_script.sh 指令稿中,有使用到 sudo 以管理者權限來執行指令,則可改用以下方式帶入 sudo 所需要的密碼:

# 執行需要 sudo 權限的指令稿
ssh user@192.168.0.1 'echo "PASSWORD" | sudo -Sv && bash' < local_script.sh

傳遞指令稿參數

假設 local_scrpt_arg.sh 的內容如下:

# local_script_arg.sh 指令稿內容

# 取得傳入參數
echo "Hello, ${YOUR_NAME}!"

若要在遠端執行這個指令稿時,傳入 YOUR_NAME 這個變數,可以在指令中直接指定:

# 指定傳入指令稿的 YOUR_NAME 參數
ssh user@192.168.0.1 YOUR_NAME=Mary bash < local_script_arg.sh
Hello, Mary!

以 Heredoc 執行指令稿

我們也可以利用 Heredoc 的方式,直接將指令稿寫在指令中,這樣就不必另外產生一個 local_script.sh 檔案:

# 以 Heredoc 執行指令稿
ssh user@192.168.0.1 bash << EOF
echo "Hello"
echo "World"
EOF
Hello
World

若要在執行 Heredoc 指令稿時,透過環境變數傳遞指令稿參數,可以採用這樣的方式:

# 以 Heredoc 執行指令稿,並傳遞參數
ssh user@192.168.0.1 YOUR_NAME=Mary bash << 'EOF'
echo "Hello, ${YOUR_NAME}!"
EOF
Hello, Mary!

關於 Heredoc 的用法,可以參考 Bash 程式設計教學與範例:Heredoc << 與 <<< 的用法

參考資料

Share
Published by
Office Guide
Tags: Bash

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago