如果可以使用“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
答案 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请求。有些服务器不在线,即使它们在线也是如此。