忽略Applescript

时间:2016-08-18 18:24:07

标签: applescript automator

如果可以使用“smb://”来安装使用“smb://”的驱动器的自动机中的应用,如果它可以使用它的名称ping我们的服务器,并使用“https://”,如果它不在现场。

我们现在正在解决这个问题,因为除非通过smb连接,否则Mac无法打开pdf,docs等。所以直到我们发现这只是一个绑带。 不想只在登录项中将两个连接添加到驱动器,因为用户会看到错误。

这段代码的问题是,如果mac无法ping我们的服务器,脚本就会停止并抛出错误,

  

“运行AppleScript”操作遇到错误。 ping:无法解析cvm62v:未知主机

我搞错了“错误”等等,但我对此知之甚少,所以我不知道出了什么问题。

-- (0) Check to see if there server exists by pinging it
set max_retry to 60
set k to 0
repeat while (do shell script "ping -c 1 cvm62v") contains "100% packet loss"
	delay 5
	set k to k + 1
	-- (2) It doesn't exist, mount the https volume
	if k > max_retry then tell application "Finder"
		try
			mount volume "https://my.server.edu/shared/"
			delay 1
		end try
	end tell
end repeat
-- (2) It exists, mount the smb volume
tell application "Finder"
	try
		mount volume "smb://cvm62v/shared/"
		delay 1
	end try
end tell

1 个答案:

答案 0 :(得分:0)

您必须将do shell脚本放在try块中。根据您的代码,我建议您使用子功能" ServConnected"如下:

-- how to call the sub-function in the main program :
set mytest to ServConnected("cvm62v") -- = true if 0% loss, else = false


on ServConnected(ServName)
try
    set R to do shell script "ping -c 1 " & ServName
    set SOK to (R contains "0.0% packet loss")
on error
    set SOK to false
end try
return SOK
end ServConnected

在这种情况下,如果0.0%丢包,则该函数返回true。如果您的网络不是那么好,那么ping的结果会导致20.0%的数据包丢失?你认为服务器是否连接?

另请注意,您的服务器必须设置为应答ping请求。有些服务器不在线,即使它们在线也是如此。