Bash

使用命令的輸出生成 ssh 登錄

  • December 19, 2018

我有一個我非常喜歡的腳本,它生成一個兩鬥 ssh + 埠轉發命令。

ssh -N -f -o 'ControlMaster Auto' -o 'ControlPath /tmp/gimme_access' -o 'ControlPersist 1m' -L 6473:33.22.0.0:22 -i /home/sink/.ssh/id_dsa -o 'UserKnownHostsFile /home/sink/.ssh/known_hosts' -p 6000 sink@33.22.177.16 ; ssh -p 6473 -l noc -i /home/my_boy/.ssh/id_rsa -o 'StrictHostKeyChecking no' 127.0.0.1

這讓我使用了許多不同的小玩意兒,我可以重新編寫它來讓我登錄到那些機器上,但我更喜歡命令只輸出連接字元串。

有什麼可以讓我通過管道生成上述字元串並讓我登錄的命令。我嘗試只管道到 bash,但這立即讓我退出了。

您可以使用eval來執行儲存在字元串中的命令(或基於另一個程序的輸出):

eval 'echo Hello World'
eval $(magic-ssh-commmand-generator)

來自man bash

eval [arg ...]
   The  args  are  read  and concatenated together into a single command. 
   This command is then read and executed by the shell, and its exit status
   is returned as the value of eval.  If there are no args, or only null 
   arguments, eval returns 0.

引用自:https://unix.stackexchange.com/questions/489996