Synology-Forum.nl

OS Specifieke ondersteuning => Mac OS X => Topic gestart door: FCU4ever op 30 maart 2024, 09:37:34

Titel: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 30 maart 2024, 09:37:34
Goedemorgen,

Ik heb een NAS bij mijn moeder thuis staan zodat deze kan dienen als externe backup. Mocht er thuis een blikseminslag o.i.d. zijn dan heb ik altijd nog een backup elders. Nu benader ik deze NAS via een VPN verbinding met OpenVPN. Dit werkt allemaal naar behoren. Echter wil ik dat wanneer de Mac opstart deze direct verbindt met de netwerkschijf. Dit heb ik ingesteld via systeemvoorkeuren --> gebruikers en groepen --> inloggen en dan de netwerkschijf toevoegen. Echter wanneer ik opnieuw opstart duurt het enige tijd voordat OpenVPN is verbonden maar heeft de Mac al wel geprobeerd verbinding met de netwerkschijf te maken en die mislukt logischer wijs dan ook omdat de VPN pas na een minuut of 2 is verbonden.

Hoe kan ik instellen dat de Mac een bepaald aantal minuten moet proberen met de netwerkschijf te verbinden?
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Sylvester op 30 maart 2024, 10:09:10
Buiten het feit dat er misschien andere manieren zijn om wél automatisch te verbinden zonder problemen, kan je eventueel gebruik maken van 'automator'.
Ik heb een verbinding met webdav opgezet, werkt prima. Veilig? Voor mij voldoende denk ik.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Birdy op 30 maart 2024, 11:33:05
Met wat maak je een backup naar de externe NAS en moet je daarom per se een netwerkschijf hebben ?
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 30 maart 2024, 12:23:59
TimeMachine op Mac laat ik automatisch een backup maken naar de externe NAS via een VPN verbinding. Dit gaat allemaal automatisch dus zou handig zijn als de netwerkschijf probeert te verbinden nadat openvpn een verbinding tot stand heeft gebracht.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 30 maart 2024, 12:24:42
Met WebDAV heb ik tot nu toe de ervaring dat het giga langzaam gaat vandaar de overstap naar een VPN
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Sylvester op 30 maart 2024, 14:23:36
Bij mij gaat die alleszins niet langzaam. Maar goed, ik denk dat je op een andere manier backup moet maken. Er zijn zoveel manieren. Time Machine zou ik niet extern laten lopen, dat is vragen om problemen.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Birdy op 30 maart 2024, 14:34:09
Met VPN is het niet "extern", de Mac en NAS zitten dan immers samen in 1 netwerk.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Sylvester op 30 maart 2024, 15:15:56
Ja dat klopt. Tot zover de theorie. In de praktijk loopt Time Machine wel eens mis, en als je het op die manier doet loopt het wel eens vaker mis. A. Backup die mis kan lopen. B. Het moet ook nog werken om hem (via dezelfde weg) terug te zetten.
Ik spreek uit ervaring. Ik hou de T/M lokaal. De andere backups gaan grotendeels naar 2 externe locaties.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Birdy op 30 maart 2024, 15:52:03
Ik heb daar geen ervaring mee, ik heb nl geen Windows allergie. :lol:
Maar, ik kan het mij niet echt voorstellen, Apple maakt toch altijd betrouwbare software ? ;)
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 30 maart 2024, 18:55:35
Het mooiste zou zijn dat het VPN programma een script kan starten als een verbinding tot stand komt.  Maar als ik in Tunnelblick kijk, wat Synology aan mac-gebruikers aanraad, is het starten van een script geen optie van dit VPN programma. Zoiets leek me een zinvolle optie bij een vpn prgramma.  ;)

Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Pippin op 30 maart 2024, 20:27:15
OpenVPN heeft "hooks" waarmee allerlei zaken geautomatiseerd kunnen worden.

In dit geval kun je een script aanroepen die de netwerkverbinding tot stand brengt zodra de VPN link tot stand is gekomen.
Zie daarvoor
--script-security level
--up
--down
in de manual.

script-security zou dan 2 moeten zijn.
Lees dus het deel
Citaat
SCRIPTING INTEGRATION
in de manual: https://build.openvpn.net/man/openvpn-2.6/openvpn.8.html
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 31 maart 2024, 16:40:08
Hartelijk dank voor dit antwoord.

Ziet er ingewikkeld uit. Kijken of het lukt als ik me er even in ga verdiepen.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 02 april 2024, 08:43:09
Via dit commando zou ik een script kunnen oproepen.

--script-security 2 --up /path/to/your/script

Echter is het voor mij abracadabra hoe ik dan vervolgens een script moet maken die de verbinding met de netwerkschijf tot stand brengt. Hopelijk kunt u mij daarbij helpen.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 02 april 2024, 09:02:00
Ik gebruik bv het volgende applescript om met één klik 3 shares te mounten.  In mijn geval heb ik het script als programma laten exporteren en run dat programma.

(*
  Mount shares to the desktop. Finder will ask for a password the first time.
  You than can choose to store it in the keychain to let it automount the next time.
  Duplicate the "mount_share" command to add more shares.
*)

mount_share("smb", "Briolet", "GedeeldeData.local", "GH-Data")
mount_share("smb", "Briolet", "GedeeldeData.local", "Macintosh")
mount_share("smb", "Briolet", "GedeeldeData.local", "home")



on mount_share(protocol, account, server, share)
set x to 0
-- try a few time in case the server has to wake up first.
-- don't do anything if the share is already mounted
repeat until x > 4 or (list disks) contains share
tell application "Finder"
try
mount volume protocol & "://" & account & "@" & server & "/" & share
on error
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share


Maar waarschijnlijk is een bash script van 1 regel ook voldoende.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 02 april 2024, 21:34:17
Het is gelukt dmv een simpel applescript waarin ik een delay heb toegevoegd. Het script is als volgt:

tell application "Finder"
    delay 30
    mount volume "smb://ip-adres_NAS/mapnaam" as user name "USERNAME"
end tell

sla dit script op als een app en voeg deze toe aan systeemvoorkeuren -> Gebruikers en groepen -> Inloggen
Titel: Opstartscript automatisch verbinden NAS opnieuw uitvoeren na verbroken connectie
Bericht door: FCU4ever op 17 mei 2024, 11:33:08
Goedemorgen,

Ik heb een NAS buiten mijn thuisnetwerk draaien waarmee ik via onderstaande applescript automatisch verbinding maak wanneer mijn MacBook opstart:

tell application "Finder"
    delay 30
    mount volume "smb://ip-adres_NAS/mapnaam" as user name "USERNAME"
end tell

Nu komt het wel eens voor dat de verbinding met de NAS wordt verbroken en dat ik dan weer handmatig verbinding moet maken. Kan iemand mij helpen om het script zo aan te passen dat deze elke minuut o.i.d. controleert of de verbinding nog in stand is en wanneer dit niet het geval is deze verbinding weer hersteld wordt?
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Birdy op 17 mei 2024, 11:40:06
Ik heb je 2 Topics maar samengevoegd, dan wordt het eenduidiger............
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 17 mei 2024, 12:04:26
Even zoeken met DDG leverde op:

Citaat
if you want to run applescript periodically, use "Idle" handler :

On idle
-- do this and this / add you code
return xxx
end idle

you run your code and it will keep running for ever (except if your code contains a quit command). the xxx value after the return is the number of seconds (positive !) before the next run. in your code, you can check application current status, or any other things. If not enough, you can use launchd method (see Apple launchd).

Jouw code kun je er dan in plakken.


Edit:  Ik mijn script eens aangepast met dit idle commando, maar dan mount hij bij mij niets. op mijn mac met OS Sonoma.  Wat zeker moet werken is het maken van een "launchd".  Ik heb het nooit gedaan, maar dan wordt een timer in het systeem gezet en periodiek een opdracht uitgevoerd.

Zie: Scriptbeheer met 'launchd' in Terminal op de Mac (https://support.apple.com/nl-nl/guide/terminal/apdc6c1077b-5d5d-4d35-9c19-60f2397b2369/mac) of https://launchd.info
En de launchd files zijn tekstfiles in het 'plist' formaat. zie b.v. How do I set a task to run every so often? (https://stackoverflow.com/questions/132955/how-do-i-set-a-task-to-run-every-so-often)
Dit is vergelijkbaar met de cronjobs op de nas.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 17 mei 2024, 19:01:31
Het is mij wel gelukt met het idl handler commando. Het script wordt dan als volgt (vergeet niet om hem op te slaan als met het vinkje bij 'Niet sluiten na uitvoerhandler'):

on idle

tell application "Finder"
delay 30
mount volume "smb://ip-adres_NAS/mapnaam" as user name "USERNAME"
end tell

return 300
end idle
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 17 mei 2024, 23:59:01
Goed dat je het toch geprobeerd hebt. Het werkt hier nu ook.

Ik had het script eerst binnen de script editor gerund en daar deed hij niets. Daarna dacht ik dat deze idle handler misschien alleen werkte als het script gecompileerd werd tot app. Maar hierbij heb ik niet op de 3 checkboxjes gelet die ik nog kon aanvinken.

Inderdaad zorgt 'Niet sluiten na uitvoerhandler' ervoor dat de app dan open blijft en blijft zijn werk op de achtergrond uitvoeren.

Ik houd van het gebruik van functies, dus mijn eerdere script wordt dan:

on idle
mount_share("smb", "Briolet", "GedeeldeData.local", "GH-Data")
mount_share("smb", "Briolet", "GedeeldeData.local", "Macintosh")
        mount_share("smb", "Briolet", "GedeeldeData.local", "home")
return 120
end idle


on mount_share(protocol, account, server, share)
set x to 0
-- try a few time in case the server has to wake up first.
-- don't do anything if the share is already mounted
repeat until x > 4 or (list disks) contains share
tell application "Finder"
try
mount volume protocol & "://" & account & "@" & server & "/" & share
on error
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share

Het verschil met jouw script is dat hij niet elke keer de share probeert te mounten, ook al is hij al gemount. Dit script kijkt eerst of hij al gemout is en mount alleen als hij hem nog niet ziet. En probeert het 4 keer, voor het geval de nas erg traag reageert, b.v. omdat hij eerst uit een slaapstand moet komen. En als de share al gemount is, wordt het commando "delay 30" ook nooit uitgevoerd.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 19 mei 2024, 07:31:34
Ik zou dit script graag willen gebruiken.

Volgens mij hoef ik alleen het eerste gedeelte aan te passen naar mijn NAS. Ik kan alleen niet zo goed herleiden waar ik welke gegevens in moet vullen.

mount_share("smb", "Briolet", "GedeeldeData.local", "GH-Data")

Briolet = gebruikersnaam?
GedeeldeData.local = NAS naam?
GH-Data = Mapnaam?

Kunt u mij opweg helpen?
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 19 mei 2024, 10:18:34
Precies zoals je schrijft.

GedeeldeData.local is het IP adres van de nas of de domeinnaam van de nas.

Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 21 mei 2024, 20:08:12
Hartelijk dank. Script werkt naar behoren

on idle
mount_share("smb", "Lisa", "xx.xx.xx.xx", "Backup Lisa")
return 120
end idle


on mount_share(protocol, account, server, share)
set x to 0
-- try a few time in case the server has to wake up first.
-- don't do anything if the share is already mounted
repeat until x > 4 or (list disks) contains share
tell application "Finder"
try
mount volume protocol & "://" & account & "@" & server & "/" & share
on error
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 11 juni 2024, 15:07:36
Ik ben nog niet helemaal tevreden met het script.

Wat is nu het probleem? Wanneer ik de Mac afsluit of uitlog wordt dit verhinderd door het script dat ik vervolgens via forceer stop moet afsluiten voordat ik het account kan uitloggen of de Mac kan afsluiten.

Mogelijk komt het door mijn wat bijzondere set up. Ik heb namelijk 1 NAS thuis staan en 1 NAS extern staan. Om met beide NASsen te verbinden heb ik 2 verschillende scripts gemaakt (kan vast ook in 1 script maar ik heb geen idee hoe).
Script 1 start direct bij het opstarten van de Mac en verbindt met de NAS in het thuisnetwerk. Iets daarna start automatisch de OpenVPN app en verbindt de DDNS van de externe NAS. Met een delay van 30 seconde start script 2 welke verbindt met de externe NAS.

Vervolgens blijven beide scripts controleren of de verbinding nog in stand is en wanneer er 1 is weggevallen probeert hij deze te herstellen. Dit werkt allemaal naar behoren behalve dat het afsluiten of uitloggen problemen oplevert.

Heeft iemand een oplossing voor dit probleem?
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 11 juni 2024, 18:27:48
Geen oplossing, maar dit lijkt me een bug in de scripteditor. Die genereert blijkbaar een app die niet reageert op een sluiten opdracht.  Ik kon mijn test app wel gewoon via het quit commando sluiten.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 12 juni 2024, 11:18:36
Dat zou dan een vervelende bug zijn. Vreemde is wel dat het lijkt of alleen het script dat mijn externe NAS benadert problemen heeft met het afsluiten. Het script dat de NAS in het thuisnetwerk benadert sluit wel netjes af.....

Wellicht een idee om eerst te proberen om 1 script te maken (ipv 2 scripts) en dan te bedenken hoe we een shutdown commando kunnen toevoegen.

Ik gebruik momenteel 2x dit script (1x voor NAS thuisnetwerk en 1x met een 30 seconde vertraging voor NAS extern)

Script 1

on idle
mount_share("smb", "Lisa", "xx.xx.xx.xx", "Data")
return 120
end idle


on mount_share(protocol, account, server, share)
set x to 0
-- try a few time in case the server has to wake up first.
-- don't do anything if the share is already mounted
repeat until x > 4 or (list disks) contains share
tell application "Finder"
try
mount volume protocol & "://" & account & "@" & server & "/" & share
on error
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share

Script 2 (wordt doormiddel van de app Autostarter 30 seconde later opgeroepen)

on idle
mount_share("smb", "Lisa", "xx.xx.xx.xx", "Backup Lisa")
return 120
end idle


on mount_share(protocol, account, server, share)
set x to 0
-- try a few time in case the server has to wake up first.
-- don't do anything if the share is already mounted
repeat until x > 4 or (list disks) contains share
tell application "Finder"
try
mount volume protocol & "://" & account & "@" & server & "/" & share
on error
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share
Hoe kan ik deze 2 scripts combineren waarin na opstarten Mac direct verbinding wordt gemaakt met de NAS in het thuisnetwerk en met een 30 seconde vertraging (wanneer OpenVPN is opgestart en verbonden) verbinding gemaakt met de NAS extern?

Wanneer dat werkend is kunnen we kijken of een commando mogelijk is om het script te stoppen wanneer de Mac afsluit of uitlogt.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 12 juni 2024, 14:58:02
Volgens mij kom je op zoiets. (ongetest)

global eerste_keer
set eerste_keer to true

on idle
if eerste_keer then
mount_share("smb", "Lisa", "xx.xx.xx.xx", "Data")
set eerste_keer to false
return 30
else
mount_share("smb", "Lisa", "xx.xx.xx.xx", "Data")
mount_share("smb", "Lisa", "xx.xx.xx.xx", "Backup Lisa")
return 120
end if
end idle


on mount_share(protocol, account, server, share)
set x to 0
-- try a few time in case the server has to wake up first.
-- don't do anything if the share is already mounted
repeat until x > 4 or (list disks) contains share
tell application "Finder"
try
mount volume protocol & "://" & account & "@" & server & "/" & share
on error
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share

De eerste keer probeert hij alleen de ene disk te mounten en wacht dan 30 seconden.  Daarna probeert hij beide te mounten en wacht 120 sconden
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 12 juni 2024, 18:08:57
Wanneer ik het script opsla als een app die niet wordt gesloten na de uitvoerhandler en ik open die vervolgens krijg ik de foutmelding:

De variabele eerste_keer is niet gedefinieerd

De variabele eerste_keer is niet gedefinieerd. (-2753)
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 12 juni 2024, 20:48:39
Ik ben niet echt thuis in de apple script taal.  Ik zou verwachten dat die variabele globaal gedefinieerd wordt en dus ook binnen die idle loop bestaat.

Ik heb even gezocht en je moet globale variabelen inderdaad expliciet definieren.

Het script moet dus beginnen met

global eerste_keer
(Ik heb het vorige script hierop aangepast.)

Het voelt voor mij een beetje vreemd dat variabelen binnen een functie automatisch gedefinieerd worden door ze te gebruiken, maar daarbuiten niet.  Voor de fanatiekeling: "Apple Script language guide (https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/conceptual/ASLR_variables.html#//apple_ref/doc/uid/TP40000983-CH223-SW10)"
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 12 juni 2024, 21:01:30
Sowieso hartstikke fijn dat u probeert te helpen.

De errorcode is veranderd naar:
1 kan niet in type boolean worden omgezet. (-1700)
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 13 juni 2024, 16:08:56
Ik dacht dat Apple Script zo'n meedenkend taaltje was. En in talen als JavaScript kun je een getal gewoon als boolean gebruiken.  Volgens mij zelfs in objective-C. Dan moet je er blijkbaar een expliciete vergelijking van maken.

if eerste_keer = 1 then
Of de variabele direct als boolean definiëren met een false/true waarde. Dat is mooier en ik zal het script hierboven op die manier aanpassen

global eerste_keer
set eerste_keer to true

En dan false maken na de eerste uitvoering
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 13 juni 2024, 19:44:16
We zijn een stap verder. Met de aanpassing Mount het script netjes de schijf in het lokale netwerk. Echter Mount hij na 30 seconde daarna niet de externe schijf. Het lijkt alsof hij dus in een loop blijft zitten van het eerste gedeelte. Als ik namelijk de schijf in het thuisnetwerk unmount dan is hij heel snel weer gemount.

global eerste_keer
set eerste_keer to true

on idle
   if eerste_keer then
      mount_share("smb", "Lisa", "NAS_naam", "Data/Mijn Afbeeldingen")
      set eerste_keer to false
      return 30
   else
      mount_share("smb", "Lisa", "NAS_naam", "Data/Mijn Afbeeldingen")
      mount_share("smb", "Lisa", "IP-externe NAS", "Backup Lisa")
      return 120
   end if
end idle


on mount_share(protocol, account, server, share)
   set x to 0
   -- try a few time in case the server has to wake up first.
   -- don't do anything if the share is already mounted
   repeat until x > 4 or (list disks) contains share
      tell application "Finder"
         try
            mount volume protocol & "://" & account & "@" & server & "/" & share
         on error
            set x to x + 1
            delay 30
         end try
      end tell
   end repeat
end mount_share
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 14 juni 2024, 00:12:45
Ik zou het zo even ook niet weten.  Meestal voeg ik dan allerlei logging regels toe aan een script zodat ik kan volgen waar hij wat doet.

Of inplaats van logging de regel
Say "Beep!"ergens in de tweede lus toevoegen om the checken of hij daar ooit komt.

Of de volgende twee regels op een handige plek toegoegen:
say "Loop een"

Say "Loop twee"
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 14 juni 2024, 08:58:47
Ik snap je werkmethodiek. Echter ben ik helaas helemaal niet thuis in programmeren/scripten (helaas).

Wat ik nu geprobeerd heb om te kijken waar het script stopt is het volgende:
Als ik het script zoals in mijn vorige post 'run' dan krijg ik als uitvoer het bericht 'true' en de netwerkschijf in het thuisnetwerk wordt gemount. Vervolgens wordt na 30 seconde niet de externe schijf gemount.

Als ik het script aanpas en de begrippen 'true' en 'false' omdraai dan verwacht ik dat ik als uitvoer 'false' krijg en dat er niets gemount wordt. Na een run van het script is dit exact de uitkomst.

Het lijkt er dus op dat het eerste gedeelte werkt

global eerste_keer
set eerste_keer to true

on idle
   if eerste_keer then
      mount_share("smb", "Lisa", "NAS_naam", "Data/Mijn Afbeeldingen")
      set eerste_keer to false
      return 30

maar dat hij in een loop zit en eerste_keer gewoon weer op true zet.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 14 juni 2024, 11:40:32
Ik heb het script nu toch even zelf tot app gekompileerd

   else
      mount_share("smb", "Lisa", "NAS_naam", "Data/Mijn Afbeeldingen")
      mount_share("smb", "Lisa", "IP-externe NAS", "Backup Lisa")
      Say "Loop twee"
      return 120
   end if

En elke 120 seconden zegt hij "Loop twee". En de disk mount opnieuw als ik heb weer weggegooid had.  Dus die code loopt wel goed.

En als ik de app dubbelklik, zodat hij op de voorgrond komt, en dan Cmd-Q doe, sluit hij netjes. Geforceerd sluiten is hier niet nodig.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 14 juni 2024, 11:47:45
Dan ga ik dat proberen om in mijn script toe te voegen en kijken of ik ook die melding van loop 1 en loop 2 krijg. Want zoals ik het begrijp werkt het script bij jou wel
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 16 juni 2024, 10:30:59
Het zal aan mij liggen maar ik krijg niet de melding Loop een en/of Loop twee (terwijl wel mijn lokale disk wordt gemount).

Ik kan het script in de Dock ook niet openen om hem via kruisje af te sluiten. Vandaar dus ook de geforceerde stop.

Op de een of andere manier zit er een fout in mijn script of de manier van opslaan (vink alleen 'Niet sluiten na uitvoerhandler' aan).

global eerste_keer
set eerste_keer to true

on idle
   if eerste_keer then
      mount_share("smb", "Lisa", "NAS_naam", "Data/Mijn Afbeeldingen")
      say "Loop een"
      set eerste_keer to false
      return 30
   else
      mount_share("smb", "Lisa", "NAS_naam", "Data/Mijn Afbeeldingen")
      mount_share("smb", "Lisa", "IP-adres externe NAS", "Backup Lisa")
      say "Loop twee"
      return 120
   end if
end idle


on mount_share(protocol, account, server, share)
   set x to 0
   -- try a few time in case the server has to wake up first.
   -- don't do anything if the share is already mounted
   repeat until x > 4 or (list disks) contains share
      tell application "Finder"
         try
            mount volume protocol & "://" & account & "@" & server & "/" & share
         on error
            set x to x + 1
            delay 30
         end try
      end tell
   end repeat
end mount_share
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 27 juni 2024, 20:47:43
Na dit topic en mijn pogingen tot een succesvol script even te staken ben ik vandaag weer wat aan het proberen geweest. Ik heb het script van boven naar beneden opnieuw opgebouwd en gekeken tot welke regel het script werkt. Ik kwam er al vrij snel achter waar het fout ging, namelijk bij het commando Mount_share dit is kennelijk in de laatste OS een onbekend commando en werkt wel wanneer ik dit vervang voor Mount volume. Nu wordt het script als volgt:

on idle
mount volume "smb://NASNAAM_lokaal/Data/Mijn Afbeeldingen" as user name "Lisa"
delay 30
mount volume "smb://NASIP_extern/Backup Lisa" as user name "Lisa"
return 120
end idle

on mount_share(protocol, account, server, share)
set x to 0
-- try a few time in case the server has to wake up first.
-- don't do anything if the share is already mounted
repeat until x > 4 or mounted_shares() contains share
tell application "Finder"
try
mount volume protocol & "://" & account & "@" & server & "/" & share
on error
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share

Met dit script Mount de lokale NAS direct bij opstarten en de externe NAS volgt een 30 seconde later. Ook wanneer de verbinding is verbroken re-mount het script de schijven weer. Ook het afsluiten van het script loopt zonder problemen (geen gedoe meer met force uit).

Ik ben wel nog benieuwd of het tweede gedeelte van de code nu nog werkt (vanaf on mount_share(protocol, account, server, share) aangezien ik Mount_share heb gewijzigd in Mount volume.

Kan iemand hier uitsluitsel over geven of aangeven hoe het script anders gewijzigd moet worden?
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Birdy op 27 juni 2024, 21:00:08
Heb geen MAC dus kan ik niet testen maar, mount_share is alleen maar de naam van loop, volgens mij, net zoals idle.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 28 juni 2024, 09:13:29
Citaat
het commando Mount_share dit is kennelijk in de laatste OS een onbekend commando

Natuurlijk is dit een onbekend commando voor het OS. Het is een functie die in dit script gedefinieerd wordt en dan vanuit de idle loop aangeroepen.
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: FCU4ever op 28 juni 2024, 10:07:32
Ik heb nog een hoop te leren als het gaat om applescript.

Volgens mij betekent dit wel dat dit gedeelte niet werkt omdat ik mount volume gebruik ipv mount_share:
on mount_share(protocol, account, server, share)
set x to 0
-- try a few time in case the server has to wake up first.
-- don't do anything if the share is already mounted
repeat until x > 4 or mounted_shares() contains share
tell application "Finder"
try
mount volume protocol & "://" & account & "@" & server & "/" & share
on error
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share

Is dit eenvoudig opgelost door mount_share te vervangen voor mount volume of zie ik dat verkeerd?
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Birdy op 28 juni 2024, 11:32:23
Volgens mij maakt het niet uit omdat ik denk dat het alleen maar een naam van de loop is (zoals eerder aangegeven).
Dus:

on mount_share
Doe wat
end mount_share

Kan dus ook zijn:
on pietje
Doe wat
end pietje

Maar, een progrmameur die een script maakt, vraagt om duidelijkheid in het script dus, ik zou doen:

on mount_volume
Doe wat
end mount_volume

Test maar.

PS: Ik kan ook fout zitten te denken ;)
Titel: Re: Automatisch verbinden netwerk schijf blijven proberen
Bericht door: Briolet op 28 juni 2024, 16:13:21
Het stuk:
on mount_share(protocol, account, server, share)

end mount_share

is een zelf gedefinieerde functie in het script. Het doet in beginsel niets uit zichzelf. En de naam kan gekozen worden zoals je wilt, maar ik heb hier een naam gekozen die het doel direct duidelijk moet maken.

Deze functie moet worden aangeroepen vanuit andere onderdelen van het script. En dat gebeurt hier vanuit de "on idle" loop. Deze loop wordt wel steeds periodiek vanuit het OS geactiveerd.

Als ik een bepaald stukje code minimaal 2x binnen een script gebruik, maak ik er liever een functie van dan een serie herhalende code onder elkaar te tikken. Dat vind ik overzichtelijker als je door de hoofdlus scrolt omdat de hoofdlus dan compact blijft. In dit geval slechts twee regels in de on idle loop.

Bij zo'n kort stukje code maakt het voor het overzicht niet veel uit, maar bij lange code heb ik liever 5 pagina's met functies dan 100 paginas zonder functies.  ;)