[英]Copy/paste contents from a file into multiple tmux ssh sessions
我有一個包含 IP 地址列表的文件,例如稱為 IP_LIST。 我的目標是遍歷每個 IP 並將其復制到多個 tmux 窗格(每個窗格 1 個 IP)。 下面的腳本假定您已經在 tmux session 中。 我很難將 IP 復制到剪貼板,然后將其粘貼到每個窗格。 我確定我需要以某種方式合並 tmux-buffer。 我希望有人能指出我正確的方向。
目前,該腳本執行以下操作:
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.