Auteur Topic: Mounting shares met applescript  (gelezen 11751 keer)

Offline Phoenix77

  • Bedankjes
  • -Gegeven: 13
  • -Ontvangen: 24
  • Berichten: 238
Re: Mounting shares met applescript
« Reactie #15 Gepost op: 25 september 2015, 19:19:59 »
Veel mooiere oplossing dan die ik snel even had bedacht.
Ik had een extra tellertje voor het aantal shares toegevoegd en het mount commando voor home als laatste in de rij opgenomen.
(very quick and very dirty)


on mount_share(protocol, account, server, share)
set x to 0
set y 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 > 5 or (list disks) contains share or y > 6
tell application "Finder"
try
mount volume protocol & "://" & account & "@" & server & "/" & share
set y to y + 1
on error
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share

Ga meteen jouw script even implementeren.
  • Mijn Synology: DS214Play
  • HDD's: 2 WD30EFRX

Offline TonVH

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 86
  • -Ontvangen: 428
  • Berichten: 3.352
Re: Mounting shares met applescript
« Reactie #16 Gepost op: 25 september 2015, 20:04:43 »
Het werkt ook met AFP. SMB was  een willekeurige keuze in het voorbeeld.

Sinds Mavericks is SMB echter het voorkeurs protocol tussen mac's, als beide protocollen via bonjour worden aangeboden. Als apple afscheid lijkt te nemen van afp, lijkt het me dat je shares ook gewoon met smb moet verbinden.

Voorlopig blijk ik toch bij AFP want dan zie ik (op de Desktop) de bij de betreffende HD behorende icon wat voor een snellere herkenning zorgdraagt.


Problemen kun je op 2 manieren oplossen: simpel of ingewikkeld.
Firewalls maken meer kapot dan je lief is. Problemen?
Zet dan eens de Firewall uit en kijk of er nog steeds een probleem is.

-------------------------------------------
DS415+, DS216+II, DS116, DS114

Offline Phoenix77

  • Bedankjes
  • -Gegeven: 13
  • -Ontvangen: 24
  • Berichten: 238
Re: Mounting shares met applescript
« Reactie #17 Gepost op: 26 september 2015, 08:45:39 »
@Briolet

Het script werkt prima, alleen lijkt het niet goed te werken in een multiuser omgeving, waarbij dezelfde shares gemount moeten worden, echter enkel onder een ander OSX en DSM account.

Het script mount de eerst aangegeven share bij de tweede gebruiker maar het stukje

on mounted_shares()

tell application "System Events" to get the name of every disk whose free space > 1

end mounted_shares

lijkt daarna in een loop te blijven hangen.

Enig idee waar dat door kan komen?

Het is toch wel even wennen de overstap naar OSX  ;D
  • Mijn Synology: DS214Play
  • HDD's: 2 WD30EFRX

Online Briolet

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 180
  • -Ontvangen: 2668
  • Berichten: 16.550
Re: Mounting shares met applescript
« Reactie #18 Gepost op: 26 september 2015, 09:49:29 »
Multiuser is sowieso een ramp bij mounten. De share wordt default  nml niet binnen de user gemount maar via het top level van de mac. Andere users kunnen dan ook de gemounte share zien. Ze kunnen hem niet benaderen, maar wel onbedoeld unmounten.

Op het internet worden allerlei methodes genoemd om een mountpoint naar de usermap te maken en daar de shares aan te koppelen. Dan zien andere gebruikers het bestaan van die shares helemaal niet. Toen ik bovenstaand script schreef, heb ik ook een variant geschreven die de shares via zulke mountpoints aan de individuele user koppelde. Ik gebruik echter maar 1 useraccount op de mac dus waren die moutpoints voor mij meer spielerei. Ik weet niet eens meer of ik dat script goed werkend heb gekregen. (Ik zal daar nog eens naar kijken)

Een ander probleem op de mac is dat je per protocol en server, maar met één account kunt verbinden. Als ik een testuser op de nas heb die maar 1 share mag benaderen en ik heb die share gemount, dan kan ik via mijn eigen account op de nas geen share meer koppelen. De mak negeert mijn opgegeven accountnaam en probeert de volgende share te openen onder het account waarvoor reeds een verbinding bestaat.

Ik los dat nu op door het ene account via afp en het andere account via smb te koppelen. Een echte oplossing heb ik hier nog niet voor gevonden. Komt blijkbaar zelden voor dat vanuit één mac-account naar meerdere nas accounts gekoppeld wordt.
  • Mijn Synology: DS415+
  • HDD's: 3x 3TB in SHR
  • Extra's: DS212J, RT1900ac

Online Briolet

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 180
  • -Ontvangen: 2668
  • Berichten: 16.550
Re: Mounting shares met applescript
« Reactie #19 Gepost op: 26 september 2015, 10:16:58 »
Citaat
Toen ik bovenstaand script schreef, heb ik ook een variant geschreven die de shares via zulke mountpoints aan de individuele user koppelde.

Nu weet ik weer wat het probleem met mountpoints was. Dat loopt via shelscripts en die kunnen het wachtwoord niet automatisch uit de sleutelhanger halen. Bij alle voorbeelden die ik op het internet vond voor het creëren van mountpoints, stond het wachtwoord gewoon in het script. En dat is een absolute no-no in mijn belevenis hoe je met wachtwoorden moet omgaan.

Edit: De volgende functie haalt heel mooi het WW op uit de sleutelhanger, dus die hobbel is nu ook weg.
on getPW(server, account)
do shell script "security 2>&1 >/dev/null find-internet-password -a" & account & " -gs " & server & " | awk '{print $2}'"
return (text 2 thru -2 of result)
end getPW
  • Mijn Synology: DS415+
  • HDD's: 3x 3TB in SHR
  • Extra's: DS212J, RT1900ac

Online Briolet

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 180
  • -Ontvangen: 2668
  • Berichten: 16.550
Re: Mounting shares met applescript
« Reactie #20 Gepost op: 26 september 2015, 15:36:33 »
Multiuser is sowieso een ramp bij mounten. De share wordt default  nml niet binnen de user gemount maar via het top level van de mac. Andere users kunnen dan ook de gemounte share zien. Ze kunnen hem niet benaderen, maar wel onbedoeld unmounten.

Een half jaar geleden merkte ik, naar aanleiding van vragen over dit probleem elders op het internet, dat dit ook bij mij speelde. De oplossing was mount points te maken naar een locale folder. Ik kreeg het toen niet werkend omdat ik weigerde een hardcoded WW in het script op te nemen.
Echter, nu kan ik dat probleem niet meer reproduceren. Het lijkt erop dat Apple dit probleem opgelost heeft voor normaal gemounte schijven.  :D

En dat merk ik nu ik mijn script om met locale mount-pointen te werken geheel werkend heb.  :)
  • Mijn Synology: DS415+
  • HDD's: 3x 3TB in SHR
  • Extra's: DS212J, RT1900ac

Offline Phoenix77

  • Bedankjes
  • -Gegeven: 13
  • -Ontvangen: 24
  • Berichten: 238
Re: Mounting shares met applescript
« Reactie #21 Gepost op: 27 september 2015, 15:38:04 »
@Briolet Is dat hetzelfde script aan het begin van deze post, of is het een ander script.
  • Mijn Synology: DS214Play
  • HDD's: 2 WD30EFRX

Online Briolet

  • Global Moderator
  • MVP
  • *
  • Bedankjes
  • -Gegeven: 180
  • -Ontvangen: 2668
  • Berichten: 16.550
Re: Mounting shares met applescript
« Reactie #22 Gepost op: 27 september 2015, 16:12:16 »
Het is een kleine modificatie. Ik geef hem hier voor de volledigheid.

(*
  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", "account", "nasnaam.local", "sharenaam-1")
mount_share("smb", "account", "nasnaam.local", "sharenaam-2")


on mount_share(protocol, account, server, share)
create_mountpoint(share)
set PW to getPW(server, account)
set Fx to "mount_" & protocol
if protocol = "smb" then set Fx to "mount_smbfs"
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 "mountpoint_" & share
tell application "Finder"
set myscript to Fx & " " & protocol & "://" & account & ":" & PW & "@" & server & "/" & share & " ~/mountpoint_" & share
try
do shell script myscript
on error
--display dialog myscript
set x to x + 1
delay 30
end try
end tell
end repeat
end mount_share

on mounted_shares()
tell application "System Events" to get the name of every disk whose free space > 1
end mounted_shares

on create_mountpoint(share)
set mounted to do shell script "test -d ~/mountpoint_" & share & " && echo yes || echo no"
if mounted = "no" then
do shell script "mkdir ~/mountpoint_" & share
else
do shell script "echo 'mounted'"
end if
end create_mountpoint

on getPW(server, account)
do shell script "security 2>&1 >/dev/null find-internet-password -a" & account & " -gs " & server & " | awk '{print $2}'"
return (text 2 thru -2 of result)
end getPW

Dit script genereert voor elke share een lege folder in je user folder op de mac die als mount-point dient. Ik weet nu echter niet of het een meerwaarde heeft op het eerste script.
  • Mijn Synology: DS415+
  • HDD's: 3x 3TB in SHR
  • Extra's: DS212J, RT1900ac

Offline Phoenix77

  • Bedankjes
  • -Gegeven: 13
  • -Ontvangen: 24
  • Berichten: 238
Re: Mounting shares met applescript
« Reactie #23 Gepost op: 01 oktober 2015, 20:58:15 »
Heb even zitten puzzelen met het script, maar ik krijg steeds de foutmelding No such file or directory" number -128 of No such file or directory" number -127

Ook als ik het commando mount_smbfs smb://workgroup;user:password@ nasname.local/share ~/mountpoint_share in Terminal invoer krijg ik de melding No such file or directory

de map mountpoint_share is door het script netjes aangemaakt en bestaat

Als ik in Terminal mount -t smbfs //user@ nasname.local/share ~/share doe werkt het wel, echter zodra ik het user:password doe krijg ik de melding no route to host.

Maak ik er daarna mount -t smbfs //workgroup;user:password@nasname.local/share ~/share dan krijg ik weer de melding No such file or directory

Struikelt het script wellicht over mijn wachtwoord?
  • Mijn Synology: DS214Play
  • HDD's: 2 WD30EFRX

Offline Erwin1

  • MVP
  • *
  • Bedankjes
  • -Gegeven: 64
  • -Ontvangen: 129
  • Berichten: 1.655
Re: Mounting shares met applescript
« Reactie #24 Gepost op: 08 oktober 2015, 09:36:40 »
Kan ik het script ook gebruiken als ik regelmatig niet in het eigen netwerk zit? Zonder dat ik om de 5 sec een foutmelding krijg? Het zou fijn zijn als het werkt niet als bij windows, is de share beschikbaar is hij te benaderen, zo niet dan niet..
DS718+ | 2x WD RED 3 TB SHR
DS214 maar met pensioen

Offline Phoenix77

  • Bedankjes
  • -Gegeven: 13
  • -Ontvangen: 24
  • Berichten: 238
Re: Mounting shares met applescript
« Reactie #25 Gepost op: 21 oktober 2015, 12:54:50 »
Heb uiteindelijk maar het programma Mountain aangeschaft om het probleem op te lossen.

Het gepuzzel begon me echt teveel tijd te kosten voor zoiets simpels, zijn er dus toch stiekum zaken die onder Windows beter voor elkaar zijn dan onder OSX  ;)
  • Mijn Synology: DS214Play
  • HDD's: 2 WD30EFRX