Auteur Topic: Automatisch verbinden netwerk schijf blijven proberen  (gelezen 3685 keer)

Offline Briolet

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 180
  • -Ontvangen: 2680
  • Berichten: 16.577
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #30 Gepost 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
  • Mijn Synology: DS415+
  • HDD's: 3x 3TB in SHR
  • Extra's: DS212J, RT1900ac

Offline FCU4ever

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 5
  • Berichten: 58
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #31 Gepost 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

Offline Briolet

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 180
  • -Ontvangen: 2680
  • Berichten: 16.577
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #32 Gepost 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"
  • Mijn Synology: DS415+
  • HDD's: 3x 3TB in SHR
  • Extra's: DS212J, RT1900ac

Offline FCU4ever

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 5
  • Berichten: 58
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #33 Gepost 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.

Offline Briolet

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 180
  • -Ontvangen: 2680
  • Berichten: 16.577
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #34 Gepost 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.
  • Mijn Synology: DS415+
  • HDD's: 3x 3TB in SHR
  • Extra's: DS212J, RT1900ac

Offline FCU4ever

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 5
  • Berichten: 58
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #35 Gepost 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

Offline FCU4ever

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 5
  • Berichten: 58
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #36 Gepost 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

Offline FCU4ever

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 5
  • Berichten: 58
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #37 Gepost 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?

Offline Birdy

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 1397
  • -Ontvangen: 8035
  • Berichten: 44.126
  • Fijne feestdagen.......
    • Truebase
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #38 Gepost 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.


CS406      DSM 2.0-0731    DS508      DSM 4.0-2265      DS411+II  DSM 6.2.4-25556-8   DS115J    DSM 7.1.1-42962-5   DS918+    DSM 6.2.4-25556-8
DS107+     DSM 3.1-1639    DS411slim  DSM 6.2.4-25556   DS213J    DSM 6.2.4-25556-7   DS1515+   DSM 6.2.4-25556-8   DS220+    DSM 7.2.2-72806-2
DS107+     DSM 3.1-1639    DS111      DSM 5.2-5967-9    DS413J    DSM 6.2.3-25426-2   DS716+II  DSM 7.2.2-72806-2   RT2600ac  SRM 1.3.1-9346-12
BeeDrive   1TB             BeeServer  BSM 1.2-65567                                                                 MR2200ac  SRM 1.3.1-9346-12

Offline Briolet

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 180
  • -Ontvangen: 2680
  • Berichten: 16.577
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #39 Gepost 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.
  • Mijn Synology: DS415+
  • HDD's: 3x 3TB in SHR
  • Extra's: DS212J, RT1900ac

Offline FCU4ever

  • Bedankjes
  • -Gegeven: 4
  • -Ontvangen: 5
  • Berichten: 58
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #40 Gepost 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?

Offline Birdy

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 1397
  • -Ontvangen: 8035
  • Berichten: 44.126
  • Fijne feestdagen.......
    • Truebase
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #41 Gepost 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 ;)


CS406      DSM 2.0-0731    DS508      DSM 4.0-2265      DS411+II  DSM 6.2.4-25556-8   DS115J    DSM 7.1.1-42962-5   DS918+    DSM 6.2.4-25556-8
DS107+     DSM 3.1-1639    DS411slim  DSM 6.2.4-25556   DS213J    DSM 6.2.4-25556-7   DS1515+   DSM 6.2.4-25556-8   DS220+    DSM 7.2.2-72806-2
DS107+     DSM 3.1-1639    DS111      DSM 5.2-5967-9    DS413J    DSM 6.2.3-25426-2   DS716+II  DSM 7.2.2-72806-2   RT2600ac  SRM 1.3.1-9346-12
BeeDrive   1TB             BeeServer  BSM 1.2-65567                                                                 MR2200ac  SRM 1.3.1-9346-12

Offline Briolet

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 180
  • -Ontvangen: 2680
  • Berichten: 16.577
Re: Automatisch verbinden netwerk schijf blijven proberen
« Reactie #42 Gepost 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.  ;)
  • Mijn Synology: DS415+
  • HDD's: 3x 3TB in SHR
  • Extra's: DS212J, RT1900ac


 

Synology NAS toevoegen aan “automatisch inloggen”

Gestart door HoosBoard Mac OS X

Reacties: 12
Gelezen: 3977
Laatste bericht 31 oktober 2021, 20:58:35
door Birdy
Gezocht: duidelijke handleiding automatisch downloaden van series.

Gestart door hyenakeBoard SickBeard

Reacties: 6
Gelezen: 5568
Laatste bericht 15 april 2014, 11:38:15
door Ben(V)
DS Photo+ photo Backup werkt niet automatisch/in achtergrond

Gestart door rtf74Board iOS Apps (iPhone, iPad en iPod)

Reacties: 25
Gelezen: 21924
Laatste bericht 20 juli 2016, 23:56:16
door Sylvester
SSL certificaat automatisch vernieuwen

Gestart door RubenosBoard Synology DSM algemeen

Reacties: 2
Gelezen: 862
Laatste bericht 24 april 2023, 13:33:24
door jr212
NZBget automatisch laten downloaden van nzb

Gestart door sietBoard NZBGet

Reacties: 2
Gelezen: 4492
Laatste bericht 17 juni 2011, 10:10:43
door ronaldvh