• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

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 << 與 <<< 的用法。

參考資料

  • StackOverflow:How to use SSH to run a local shell script on a remote machine?

分類:Linux 標籤:Bash

主要資訊欄

搜尋

近期文章

  • Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤
  • Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例
  • Linux 網路設定 ip 指令用法教學與範例
  • Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例
  • Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例
  • Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例
  • Linux 以 Cryptsetup 與 LUKS 加密磁碟教學與範例
  • Linux 使用 age 簡潔的加密、解密工具使用教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide