- Gizzmo_SWE
- Medlem ●
- Malmö, Skåne, Sweden
Hej,
Är ingen hejare på Applescript, men har efter massor av googlande fått till ett script som gör nästan det jag vill.
Det som återstår att fixa är att skriptet förhindrar omstart och avstängning, vilket jag inte vill.
Skriptet ser ut som nedan, och är sparat som ett program med alternativet "Lämna öppet efter körhanteraren":
repeat set intnt to do shell script "ping -c 1 <server>; echo -n" set paras to number of paragraphs in intnt if paras < 5 then else set serverIP to "smb://<server>/<share>" set UserAccount to "<username>" set ServerPassword to "<password>" set serverVolume to "<volumename>" tell application "Finder" try if disk serverVolume exists then else with timeout of 10 seconds mount volume serverIP as user name UserAccount with password ServerPassword end timeout end if end try end tell end if delay 901 end repeat
Hur får jag skriptet att stänga sig automatiskt om det uppfatar att jag vill göra en omstart eller stänga ner?
property myIntervalInSeconds : 60 on run idle end run on idle -- din kod return myIntervalInSeconds end idle on quit continue quit end quit
Så här alltså:
property myIntervalInSeconds : 901 on run idle end run on idle set intnt to do shell script "ping -c 1 <server>; echo -n" set paras to number of paragraphs in intnt if paras < 5 then else set serverIP to "smb://<server>/<share>" set UserAccount to "<username>" set ServerPassword to "<password>" set serverVolume to "<volumename>" tell application "Finder" try if disk serverVolume exists then else with timeout of 10 seconds mount volume serverIP as user name UserAccount with password ServerPassword end timeout end if end try end tell end if return myIntervalInSeconds end idle on quit continue quit end quit
Lysande Baron, skall omgående testas, tror jag får ta och skaffa mig lite bra referensmaterial för AppleScript.
Fungerade klockrent, tack!
Så här blev det när allt var klart, kanske någon mer som behöver ett skript för detta.
-- Skript för att koppla upp sig mot NAS samt hålla kopplingen vid liv.-- -- Sätter alla värden property myIntervalInSeconds : 901 -- Uppdateringsintervall property serverProtocol : "smb" -- smb m.m. property serverIP : "<IP>" -- IP eller DNS namn till servern property serverVolume : "<SHARE>" -- Share på servern property UserAccount : "<USERNAME>" -- Användarnamn på servern property ServerPassword : "<PASSWORD>" -- Lösenord på servern -- -- Då börjar vi! on run idle end run on idle set intnt to do shell script "ping -c 1 " & serverIP & "; echo -n" set paras to number of paragraphs in intnt if paras < 5 then else tell application "Finder" try if disk serverVolume exists then else with timeout of 10 seconds mount volume serverProtocol & "://" & serverIP & "/" & serverVolume as user name UserAccount with password ServerPassword end timeout end if end try end tell end if delay return myIntervalInSeconds end idle on quit continue quit end quit
varför måste man välja "Lämna öppet efter körhanteraren" när man sparar scriptet?
förmodar att det är det som gör så att den ligger kvar i dock efter att man kört programmet? hade varit bättre om man slapp se scriptet (så att det bara körs i bakgrunden hela tiden)
Jag har haft behov tidigare av att hålla externa enheter vid liv. Då har jag använt Keep Drive Spinning som skapar en s k "launch agent" som sköter detta. Vet ej om det funkar i det här fallet med en SMB share men det kanske kan vara tips till andra som läser tråden i så fall.
Skriptet ser ut som nedan, och är sparat som ett program med alternativet "Lämna öppet efter körhanteraren":
tog förgivet att det var så man var tvungen att spara det.
hur sparar man det om man inte vill ha det liggandes i dock/vill köra det i bakgrunden?
för övrigt verkar scriptet inte funka för mig då jag nu sitter och ej är ansluten till smb men har scriptet igång.
dvs jag har varit ansluten men nu tappar anslutningen och den ansluter inte igen automatiskt.
haha, låna kod? nu är det så att jag aldrig tidigare sett ens ett enda tecken applescript-kod, så att jag ska sätta mig och "låna kod" finner jag högst orimligt.
Har du fyllt i dina egna uppgifter, tex username och password, ip till share osv i mitt exempel ovan? Använder detta script sedan jag (med hjälp) skapade det, och har inte haft ett problem sedan dess.
haha, låna kod? nu är det så att jag aldrig tidigare sett ens ett enda tecken applescript-kod, så att jag ska sätta mig och "låna kod" finner jag högst orimligt.
property myVolumes : {"smb://bilder.abc.de/Bilder/", "afp://filer.fgh.ij/", "smb://10.20.30.40/dir/"} property myIntervalInSeconds : 60 on run idle end run on idle tell application "Finder" repeat with myVolume in myVolumes try mount volume myVolume end try end repeat end tell return myIntervalInSeconds end idle on quit continue quit end [B]quit
[/B]
yes, har fyllt i det.
nu verkar det dock fungera som det ska. kanske bara var tillfälligt?
hur lång delay är det från det att den blir disconnectad till att den ansluter igen? kanske bara inte väntade tillräckligt länge (tror jag väntade 5-10min innan jag postade här från att det blev disconnectat och inte anslöt igen)
property myIntervalInSeconds : 901 -- Uppdateringsintervall
901 sekunder, så det måste ha varit något tillfälligt problem.
hur/vart ska den in i det första applescriptet jag sparade?
är verkligen inte expert på applescript
Det ersätter det som finns ovan. Klarar sig alltså på egen hand, åstadkommer samma sak men på ett annat sätt.
Det försöker ansluta till de shares som definieras i myVolumes utan att kolla om de redan är tillgängliga. Enkelt och brutalt men fungerande.
Är man renlärig vill man inte blanda in Finder som det här skriptet gör.
Jag använder det för att montera volymer, inte för att hålla anslutningen vid liv.
ok, så när du kör det första scriptet (det för att hålla anslutningen till liv) så har du det liggandes i dock hela tiden? (eftersom det är igång hela tiden när datorn är igång)
är inte det irriterande om man är "renlärig"? då hade iallafall inte jag varit sugen på att fylla upp dock med apple-script ikoner
Som jag sa så kör jag inga skript för att hålla någon alsutning vid liv.
Jag kör bara skriptet jag lånade från till den här tråden.
Jag kör alltså detta: http://www.99mac.se/mac-os-x/296483-automatisk-oppning-fonster-fran-mountade-natverksmappar-vid-inloggning.html när jag vill ansluta, men som regel endast en gång om dagen.
Men oavsett detta har jag skriptet i dockan, men med en egen ikon jag har lånat från något annat nätverksrelaterat sammanhang.
Från vänster till höger: (Finder), Montera volymer, Mata ut volymer, Jämför filer med md5, (Mail).
ok, om man tar gizmos sista script, kan man på något sätt lägga till så den monterar två volymer istället för en som det är nu?
property myIntervalInSeconds : 901 -- Uppdateringsintervall property myList : {{"smb", "<IP1>", "<SHARE1>", "<USERNAME1>", "<PASSWORD1>"}, {"afp", "<IP2>", "<SHARE2>", "<USERNAME2>", "<PASSWORD2>"}} -- Då börjar vi! on run idle end run on idle repeat with theListItem in myList set {serverProtocol, serverIP, serverVolume, UserAccount, ServerPassword} to theListItem set intnt to do shell script "ping -c 1 " & serverIP & "; echo -n" set paras to number of paragraphs in intnt if paras < 5 then else tell application "Finder" try if disk serverVolume exists then else with timeout of 10 seconds mount volume serverProtocol & "://" & serverIP & "/" & serverVolume as user name UserAccount with password ServerPassword end timeout end if end try end tell end if end repeat return myIntervalInSeconds end idle on quit continue quit end quit [B]
[/B]
njae, det där kan inte stämma va?
nu har du ju bara lagt till i property, men själva koden säger ju fortfarande bara "ServerIP" och "ServerPassword", så den kommer väl ändå bara att hålla en anslutning vid liv, och då bara en volym?
ser även att du skrivit afp på den andra mountens info. men är ju smb jag ska använda mig av, är ingen mac som jag delar ut ifrån.
njae, det där kan inte stämma va?
nu har du ju bara lagt till i property, men själva koden säger ju fortfarande bara "ServerIP" och "ServerPassword", så den kommer väl ändå bara att hålla en anslutning vid liv, och då bara en volym?
ser även att du skrivit afp på den andra mountens info. men är ju smb jag ska använda mig av, är ingen mac som jag delar ut ifrån.
Jag kan rekommendera gratisprogrammet TextWrangler. Med det kan man jämföra två textdokument och se tecken för tecken var de skiljer sig. Då kommer du att se att jag inte "ju bara lagt till i property".
Ang propertyn myList innehåller ingen av delarna "riktiga" upgifter. Lika lite som jag vet att ditt användarnamn är "<USERNAME2>" vet jag att protokollet är afp. Det är alltså meningen att du ska fylla i dina egna uppgifter där.
jo, fattar att jag ska ändra username osv, trodde dock resten var sådant jag inte skulle röra.