編寫需要轉義字元的 SSH 互動式控制台腳本

編寫需要轉義字元的 SSH 互動式控制台腳本

我想透過 shell 腳本修改現有的 SSH 連線。因此,如果我遠端執行現有腳本,我希望它打開一個新的隧道連接埠。

我可以透過互動方式做到這一點:

ubuntu@6c1a17c3864c:~$ ~C
ssh> -R 9000:localhost:9000

比我說得更清楚:https://unix.stackexchange.com/questions/33557/using-an-already-builted-ssh-channel

理想情況下,我想使用 shell 腳本透過轉義字元進行交互,以調整現有連接。

我看過類似的東西:

#!/bin/bash 
# Attempt 1
echo -n '\r\f \~\~C -L 9000:localhost:9000'
# Attempt 2
echo -e '\r\f\~\C -R 9000:localhost:9000'
printf '\~\C -L 9000:localhost:9000'
netstat -taln

以及其他一些組合。

我已經驗證 echo 和 printf 都是 shell 內建函數。

我正在使用 Bash 4.3.11 x86_64-pc-linux-gnu。

答案1

您需要expect腳本來實現此目的。問題是這些轉義字元不是由 bash 計算的,而是由 ssh 用戶端在本地計算的。應該完成這項工作的範例:

#!/usr/bin/expect -f
set timeout 10
 exp_internal 1
spawn telnet $argv
expect "login:"
send "mylogin\n"
expect "Password:"
send "mypass\n"
expect '~$'
# Send some commands
close

來源

相關內容