【隨手寫】偷懶技能:AppleScript
題圖:假裝你們都不會這個技能
昨天忽然有個跳板機的問題,讓我想起了很久以前我寫的這個文章。。
需求: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解決,但沒寫好,先挖個不一定填的坑好了。。。
推薦閱讀:
※c++程序員都用mac做什麼?
※mac打開網頁速度特別慢?
※WWDC 2017:Apple生態的強力護城河
TAG:Mac | AppleScript |