題圖:假裝你們都不會這個技能

昨天忽然有個跳板機的問題,讓我想起了很久以前我寫的這個文章。。

需求:N臺伺服器,每臺伺服器上有M個日誌要看。。。

通過跳板機到達伺服器,於是有個我的機器->跳板機->伺服器的連接,我的機器到跳板機用了共享連接(/etc/ssh_config ControlMaster相關選項),但我還是需要手動輸入跳板機到伺服器的許多命令。ssh啊cd啊tail -f啊。。還有要打開新窗口啊。。

跳板機做了限制(實際上就是個自行實現的閹割的ssh server,沒法使用 ssh jumper ssh online_server這種命令,也很蠢的不支持polysh。。。

眾所周知,windows有個按鍵精靈,但Mac上沒有,調查了一下,於是用上了applescript

歷史淵源不講了,反正就是系統級別的腳本,可以代替人類的機械化操作。Mac裏同樣也自帶了個Automator,可以實現類似功能

入門就不說了,網上很多文檔

tell application "System Events" tell process "iTerm2" set frontmost to trueend tell

字面意思:通知System Events這個應用,讓iTerm2置為最前

key down commandkeystroke "t"key up command

幫我按下command+t這個按鍵組合(打開新標籤頁),等同於

keystroke "t" using {command down}

delay 1

等一秒

keystroke d using {command down}

按下command+d這個組合(左右切分窗口),此時焦點已經到達右邊(同理的還有上下切分窗口)

key code 123 using {command down,option down}

幫我按下command+option+left這個組合,把焦點變成左邊,code是一組代碼,代表不同的鍵,可以看How do I automate a key press in AppleScript? 這個鏈接瞭解更多的代碼,123是左,124是右,125上,126下

keystroke "gos r"keystroke returndelay 1keystroke "ssh servername"keystroke returnkeystroke "cw"keystroke return

然後這些就是讓它給我自動輸入的東西了。。。gos和cw都是我自己寫的bash alias,等同於ssh xxxxx和cd xxxxx

同樣的道理我們也可以使用tmux實現切分、在各個pane上執行命令、廣播命令至同一window的panes(指令:synchronize-panes ),實現上述需求

但其實我挺想要polysh把輸出都打在同一行的這種多路復用。。。

對於昨天的"堡壘機"不支持polysh問題,我的想法是用subprocess+廣播stdin+整理stdout解決,但沒寫好,先挖個不一定填的坑好了。。。


推薦閱讀:
相關文章