使用appscript完成堡壘機的自動登陸

出於網絡安全性的考慮,公司內部服務器訪問,使用的是kerbrose+堡壘機。平常訪問線上的服務器大體的步驟,先登陸kerbrose獲取票據,再登陸堡壘機,再選擇要登陸的服務器完成最終登陸。長此以往,使用mac+iterm每次都要重複上述步驟,對工做效率有很大的影響。考慮自動化的方案,在不能經過運維渠道開啓綠色通道的狀況下,咱們只能自給自足了。程序員

利用applescript寫一個腳本mac腳本,完成咱們的目的。AppleScript是Mac OS X內置的一種功能強大的腳本語言,使用 AppleScript 的目的是把一些重複繁瑣而且耗費時間的任務自動化。初次接觸,讓我想起了windows下的vbscript腳本,簡單高效。雖然喪失了跨平臺性,可是在本身專屬的平臺上代碼效率能夠達到極致。shell

因爲我使用的shell終端是iterm,粘一下自動操做iterm完成登陸的自動化操做。編程

set  worklogin  to  "ssh work@"  &  machine_ip
set  pwd  to  "你的密碼"
tell  application  "iTerm"
     activate
     --tell (make new terminal) 能夠生成一個新的終端
     tell  ( current terminal )
         --set number of columns to 150 設置終端的寬
         --set number of rows to 40 設置終端的高
         tell  ( launch  session  "login_session" )
             write  text  "relay"
             delay  2
             write  text  "q"
             delay  0.5
             write  text  "kinit hanlingzhi"
             delay  1
             write  text  pwd
             delay  1
             write  text  worklogin
         end tell
     end tell
end tell

簡單介紹一下腳本前兩行設置變量,set 變量 to 變量值。tell呼氣mac的application,這裏選擇的是"iterm",其餘應用同理,好比"Finder"。開啓一個新的會話,在iterm中建立一個新的session,而後按照一下步驟模擬操做。簡單吧~(大笑)windows

AppleScript 這種腳本語言自己儘量使用平實的英語做爲語法來讓代碼特別容易理解和閱讀。AppleScript 的大多數命令會位於 Tell 命令塊內,它叫 「Tell 命令塊」 是因爲你在告訴應用程序你 想它作些什麼。你必需要 以 「end tell」 命令來結束這個 Tell 命令塊。 安全

machine_ip 我選擇外部傳入具體登陸的服務器地址,這樣能夠參數配置須要登陸的服務器,applescript外部接收參數,使用的是on run的handler的函數。
on  run  { para 1 }
     set  machine_record  to  { 測試服務列表 }
     if  para 1  =  "-h"  or  para 1  =  "--help"  then
         helpinfo ( machine_record )
     else
         set  machine_ip  to  recordvalue ( machine_record ,  para 1 )
         if  machine_ip  =  ""  then
             log  "[warning]:沒有你要登陸的服務器"
             helpinfo ( machine_record )
         else
             try
                 itermlogin ( machine_ip )
             on error
                 log  "[warning]:登陸失敗,請檢查密碼和票據是否正確"
             end try
         end if
     end if
end  run

至此完成了腳本核心內容,applescript腳本的執行是經過osascript命令進行,爲了方便使用能夠通alias別名的方式簡化操做。bash

alias  login= 'osascript /Users/hanlingzhi/project/applescript/login.scpt'
 
而後執行
login 服務器IP就能夠了~~

AppleScript 的一個優勢是你沒必要是一個天才程序員才能使用它,事實上你甚至不須要太多有任何編程的經驗,感興趣了?那就嘗試一下吧~ 服務器

相關文章
相關標籤/搜索