2011-07-29 43 views
0

我的Mac連接到我的網絡上的SMB共享時出現了一些問題,然後在此之後立即加載應用程序。AppleScript加載卷裝入,啓動應用程序,並在mac退出掛起時重新啓動。

大多數情況下,只需通過設置要在常規登錄時掛載的捲開啓mac,一切正常,並且還可以在登錄時運行應用程序(XBMC)。

有時儘管我沒有理由在經過大量故障排除後能夠關閉某些卷,但有些時候自動掛載卷會失敗,因爲它認爲網絡位置不可用。因此,Mac無法創建卷裝,除非我重新啓動Mac,然後再次運行。

現在我想要一個AppleScript,它將嘗試創建卷裝載三(3)次,然後加載XBMC。如果在嘗試3次後無法安裝音量,請強制Mac重新啓動。這會導致腳本在重新啓動後再次從頭開始運行。

我如何在AppleScript中實現這一點?

問題二:

我有我的Mac訂走1小時不活動後暫停。唯一的問題是,如果Mac已經暫停了一段時間,一旦醒來,XBMC無法在一些時間加載遠程存儲的內容。

因此,當Mac從暫停狀態恢復時,是否可以運行腳本,使Mac執行重新啓動?

感謝任何讀過我的文章的人,我意識到這是一個咆哮。

問候。

回答

0

試試這個爲你的第一個問題。至於你的「暫停」問題,我不知道答案。不過,我會考慮launchd。你可以編寫一個啓動的plist文件,在mac恢復時運行,並且啓動的plist將使用命令行工具osascript運行applescript。

set remoteDiskName to "Disk Name" 
set remoteIPAddress to "192.168.1.xxx" 
set user_name to "userName" 
set pass_word to "password" 

repeat 3 times 
    set success to mountSMB(remoteDiskName, remoteIPAddress, user_name, pass_word) 
    if success then exit repeat 
    delay 1 
end repeat 

if success then 
    -- load XBMC 
else 
    tell application "Finder" to restart 
end if 

on mountSMB(remoteDiskName, remoteIPAddress, user_name, pass_word) 
    if remoteDiskName is in (do shell script "/bin/ls /Volumes") then 
     return true 
    else 
     set theAddress to quoted form of ("smb://" & user_name & ":" & pass_word & "@" & remoteIPAddress & "/" & remoteDiskName) 
     set mountpoint to quoted form of ("/Volumes/" & remoteDiskName) 
     try 
      do shell script "/bin/mkdir " & mountpoint & "; /sbin/mount_smbfs " & theAddress & space & mountpoint 
      return true 
     on error 
      try 
       do shell script "/bin/rm -r " & mountpoint 
      end try 
      return false 
     end try 
    end if 
end mountSMB 
+0

感謝這堆。 還有一件事,當Mac啓動時我怎樣才能讓這個腳本自動運行?那麼,當它登錄?像平時一樣將其設置爲登錄項目? – Wolferien111

+0

正如原評論員所說,看看launchd。如果你不想和plist混在一起,並從App Store購買Lingon,它會爲你處理大部分骯髒的工作。 – Clark

+0

@沃爾菲恩是的。 – fireshadow52

相關問題