簡體   English   中英

將文件中的內容復制/粘貼到多個 tmux ssh 會話中

[英]Copy/paste contents from a file into multiple tmux ssh sessions

我有一個包含 IP 地址列表的文件,例如稱為 IP_LIST。 我的目標是遍歷每個 IP 並將其復制到多個 tmux 窗格(每個窗格 1 個 IP)。 下面的腳本假定您已經在 tmux session 中。 我很難將 IP 復制到剪貼板,然后將其粘貼到每個窗格。 我確定我需要以某種方式合並 tmux-buffer。 我希望有人能指出我正確的方向。

目前,該腳本執行以下操作:

  1. 讀取 IP_LIST 文件
  2. 根據 IP 地址的數量拆分窗格。
  3. ssh 進入指定的主機。 (我在 /etc/ssh /config 中將主機配置為“mc”作為我的默認值)
while IFS= read -r ip || [[ -n "$ip" ]]; do

    echo "$ip" | xclip -selection clipboard  
    tmux split-window -v; tmux send-keys "ssh mc" ; tmux send-keys "KPEnter"
    tmux bind C-b run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"
done < "$1"

IP_list

1.2.3.4
4.3.2.1
6.7.8.9

可以使用以下命令運行:

./tmux_ip_script IP_LIST

編輯:用 tmux 緩沖區更新了腳本。 但是,不會復制到每個窗格。

您可能想查看xpanes

$ cat IP_list
1.2.3.4
4.3.2.1
6.7.8.9
$ xpanes -c 'ssh {}' $(cat IP_list)

我有類似的東西。 我將它與另一個 function 一起使用,其中 IP 地址作為第一列。 我稱我為“so.sh”(對於 ssh 打開)。 它使用發送密鑰。 在這種情況下,您將使用cat <myfile> | so.sh cat <myfile> | so.sh它將打開一個新的 tmux window 和一個新窗格,每個窗格都有一個 ssh session。 也許它可以根據您的需要進行修改。

#!/bin/bash
# so.sh => ssh open
# takes piped input, creats a new tmux window, and then  
# uses first column to open a new tmux pane with an ssh session to each pane

if ! [ -n "$TMUX" ]; then
  echo "This must be run from a tmux session"
  exit 0
fi

base="so" 


ipList=""
while read -r data; do
  ipList+=$(echo $data | awk '{print $1}')" "
done 

tmux new-window -n $base

p=1

for ip in $ipList; do
  if [[ $p > 1 ]]; then 
      tmux splitw -v -t "$base" # vertical split
    tmux select-layout -t "$base" even-vertical
  fi
    tmux send-keys -t "$base.$p" "ssh $ip" enter
  ((p++))
done


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM