• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Benachrichtigung in Mitteilungen ausgeben

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Hallo zusammen,

ich habe nach einer längeren Internetrecherche folgendes Script zusammenkopiert (und mittlerweile sogar verstanden), welches es ermöglicht, einen NAS einzubinden, sofern es verfügbar ist.

set command to "ping -c 1 192.168.178.25"set checkVar to false


repeat until checkVar is true

try
if ((do shell script command) contains " packets received, 0.0% packet loss") then
mount volume "smb://admin:p[email protected]/share"
set checkVar to true
end if
on error
display dialog "Es konnte keine Verbindung aufgebaut werden." buttons {"Nochmal", "OK"} with icon stop giving up after 3
if button returned of result is "OK" then
set checkVar to true
else if button returned of result is "Nochmal" then
set checkVar to false
else
set checkVar to true
end if
end try
end repeat

Nun würde ich gerne wissen, wie ich dieses Script dazu bewege, die Meldung nicht als Dialog anzuzeigen, sondern die Mitteilungszentrale dafür zu benutzen.

Danke und viele Grüße !
 

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
So: display notification "Text" with title "Titel" subtitle "Subtitel"
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Super!

Das klappt ja hervorragend.

Ist es möglich, hier auch Buttons a la "Erneut versuchen" und "okay" einzubinden?
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Schade. Dennoch vielen Dank, Du hast mir sehr weiter geholfen :)
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Interessant ist:

Wenn ich folgendes Script über den Scripteditor ausführe, wird die Mitteilung angezeigt. Sobald ich das Script als Programm speichere und ausführe, fällt die Mitteilung aus.

Woran könnte das liegen?

Script:

set command to "ping -c 1 192.168.178.25"set checkVar to false


repeat until checkVar is true

try
if ((do shell script command) contains " packets received, 0.0% packet loss") then
mount volume "smb://admin:p[email protected]/share"
set checkVar to true
end if
on error
display notification "Es konnte keine Verbindung mit dem NAS aufgebaut werden" with title "Fehler" subtitle "NAS nicht erreichbar"
set checkVar to true --Endlosschleife beenden
#if button returned of result is "OK" then -- Buttonabfrage bei notifications nicht möglich
# set checkVar to true
#else if button returned of result is "Nochmal" then
# set checkVar to false
#else
# set checkVar to true
#end if
end try
end repeat
 

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Schau mal in Systemeinstellungen-Mitteilungen ob die App Erlaubnis hat Mitteilungen anzuzeigen.
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Hervorragend. Daran habe ich noch nicht gedacht - und das Problem konnte gelöst werden :)

Mittels

<key>NSUIElement</key>
<string>1</string>

in der .plist konnte ich das Icon nun auch noch aus dem Dock ausblenden, sodass das Script genau das tut, was es soll. Besten Dank für eure geduldige Hilfe :)
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
So, nun wäre die Krönung, dass mein Script "NAS verbinden" nicht nur nach der Anmeldung ausgeführt wird, sondern auch nach jedem Standby.
Wie könnte ich das realisieren? Habt ihr da Ideen?

Interessant ist auch: Während das Script auf meinem iMac einwandfrei läuft, funktioniert es auf dem rMBP nicht. Es mountet einfach nicht das Laufwerk, obwohl es mountbar wäre.

Lediglich wenn ich WLAN deaktiviere, erscheint der Hinweis, dass das Laufwerk nicht gefunden werden kann.
 
Zuletzt bearbeitet:

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Entweder du benutzt ein Tool wie SleepWatcher oder du mountest die Laufwerke nicht per Script sondern per Automount, dazu gibts hier im Forum bereits ein paar Anleitungen.
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Hallo,

SleepWatcher funktioniert hervorragend, allerdings eröffnet sich das nächste Problem. Wenn der iMac/das Macbook Standby ist und ich das Gerät "wecke" - und dabei nicht schnell genug mit der Passworteingabe bin, bekomme ich den Fehler "NAS nicht erreichbar", welcher durch das Script ausgegeben werden soll.

Ein einfaches "delay 10" scheint mir da wenig sinnvoll zu sein, weil es das eigentliche Problem ja nicht löst.

Warum erhält der Mac keine Verbindung zum NAS, wenn das Gerät nicht entsperrt ist?

Der Code lautet aktuell:

set command to "ping -c 1 192.168.178.25"set checkVar to false
repeat until checkVar is true
try

if ((do shell script command) contains " packets received, 0.0% packet loss") then
mount volume "smb://admin:p[email protected]/share"
set checkVar to true
end if

on error
display notification "Es konnte keine Verbindung mit dem NAS aufgebaut werden" with title "Fehler" subtitle "NAS nicht erreichbar"
set checkVar to true --Endlosschleife beenden
end try
end repeat
 

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
Ich würde es mal so probieren:

Code:
[B]set[/B] [COLOR=#4F8F00]command[/COLOR] [B]to[/B] "ping -c1 -t2 192.168.178.25"
[B]set[/B] [COLOR=#4f8f00]maxTry[/COLOR] [B]to[/B] 10
[B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]i[/COLOR] [B]from[/B] 1 [B]to[/B] [COLOR=#4f8f00]maxTry[/COLOR]
	[B]try[/B]
		
		[B]if[/B] (([COLOR=#012fbe][B]do shell script[/B][/COLOR] [COLOR=#4f8f00]command[/COLOR]) [B]contains[/B] " packets received, 0.0% packet loss") [B]then[/B]
			[COLOR=#012fbe][B]mount volume[/B][/COLOR] "smb://admin:[email protected]/share"
			[B]exit[/B] [B]repeat[/B]
		[B]else[/B]
			[COLOR=#0433ff][B]delay[/B][/COLOR] 1
		[B]end[/B] [B]if[/B]
	[B]on[/B] [B]error[/B] [COLOR=#4f8f00]err[/COLOR]
		[COLOR=#0433ff][B]log[/B][/COLOR] [COLOR=#4f8f00]err[/COLOR]
		[B]if[/B] [COLOR=#4f8f00]i[/COLOR] [B]is[/B] [COLOR=#4f8f00]maxTry[/COLOR] [B]then[/B]
			[COLOR=#012fbe][B]display notification[/B][/COLOR] "Es konnte keine Verbindung mit dem NAS aufgebaut werden" [COLOR=#012fbe]with title[/COLOR] "Fehler" [COLOR=#012fbe]subtitle[/COLOR] "NAS nicht erreichbar"
		[B]else[/B]
			[COLOR=#0433ff][B]delay[/B][/COLOR] 1
		[B]end[/B] [B]if[/B]
	[B]end[/B] [B]try[/B]
[B]end[/B] [B]repeat[/B]

So wird 10 mal versucht eine Verbindung aufzubauen, wenn das nicht klappt, dann kommt die Fehlermeldung.
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Super, das klappt schon hervorragend :)

Ich möchte das Ganze nun noch erweitern und überprüfen, ob sich der Mac überhaupt im Heimnetzwerk befindet

Der Ansatz ist folgender:

set fritz_ping to "ping -c 1 192.168.178.25"
set fritz_online to false


-- SSID-Identifikation vorbereiten
set SSID to do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $3}'"

-- FritzBox anpingen
try

if ((do shell script fritz_ping) contains " packets received, 0.0% packet loss") then
set frintz_online to true
-- Wir sind im Heimnetzwerk

end if

on error
-- Wir sind nicht im Heimnetzwerk
end try

So, was ich nun versuche ist folgendes:

if SSID is "WLAN Kennung 1" or SSID is "WLAN Kennung 2" and fritz_online then

-- führe Einbindungsversuche aus
end if

Leider funktioniert das noch nicht. Sofern ich nur auf eine der beiden SSIDs prüfe, funktioniert es. Das "and fritz_online" scheint so aber nicht zu funktionieren, da das IMMER als "gegeben" angenommen wird, auch wenn ich die IP von fritz_ping auf eine IP ändere, die es so nicht gibt.

Sobald ich die SSIDs auf einen falschen Wert setze, erkennt das Script korrekt, dass ich mich im falschen WLAN-Netz befinde.
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Ich muss mich korrigieren: Leider wird auch bei diesem Script nach einem Aufwecken aus dem Standby angezeigt, dass die Verbindung zum NAS nicht erfolgreich ist.
Auch wenn die Delay-Werte erhöht werden, funktioniert es nicht. Ich habe den Delay einmal auf 5 Sekunden gestellt und nach knapp einer Minute Laufzeit nach dem Standby, ich konnte parallel bereits im Internet surfen, kam die Meldung, dass das Einbinden nicht mgl. sei.

Wird das Script manuell ausgeführt, funktioniert es hervorragend.

Das Script sieht aktuell so aus:

Code:
[COLOR=#5E6161]-- Variablen und Kommandos[/COLOR]
[B]set[/B] [COLOR=#4f8f00]command[/COLOR] [B]to[/B] "ping -c1 -t2 192.168.178.25" [COLOR=#5e6161]-- NAS anpingen[/COLOR]
[COLOR=#5E6161][COLOR=#000000][B]set[/B] [/COLOR][COLOR=#4f8f00]maxTry[/COLOR][COLOR=#000000] [B]to[/B] 10 [/COLOR]-- 10 Versuche, danach ist Feierabend[/COLOR]
[COLOR=#5E6161][COLOR=#000000][B]property[/B] [/COLOR][COLOR=#4f8f00]myDisk[/COLOR][COLOR=#000000] : "share" [/COLOR]-- Name des NAS für Mount-Prüfung[/COLOR]
[B]set[/B] [COLOR=#4f8f00]mountedDisks[/COLOR] [B]to[/B] [COLOR=#0433ff][I]paragraphs[/I][/COLOR] [B]of[/B] ([COLOR=#012fbe][B]do shell script[/B][/COLOR] "/bin/ls /Volumes")
[B]if[/B] [COLOR=#4f8f00]myDisk[/COLOR] [B]is not[/B] [B]in[/B] [COLOR=#4f8f00]mountedDisks[/COLOR] [B]then[/B]
[COLOR=#5E6161][COLOR=#000000]    [/COLOR]-- NAS ist nicht gemounted, daher weiter machen[/COLOR]
[COLOR=#5E6161][COLOR=#000000]    [/COLOR]-- SSID-Identifikation vorbereiten[/COLOR]
    [B]set[/B] [COLOR=#4f8f00]SSID[/COLOR] [B]to[/B] [COLOR=#012fbe][B]do shell script[/B][/COLOR] "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $3}'"
    
    [B]if[/B] [COLOR=#4f8f00]SSID[/COLOR] [B]is[/B] "Kennung1" [B]or[/B] [COLOR=#4f8f00]SSID[/COLOR] [B]is[/B] "Kennung2" [B]then[/B]
        
        [B]repeat[/B] [B]with[/B] [COLOR=#4f8f00]i[/COLOR] [B]from[/B] 1 [B]to[/B] [COLOR=#4f8f00]maxTry[/COLOR]
            [B]try[/B]
                
                [B]if[/B] (([COLOR=#012fbe][B]do shell script[/B][/COLOR] [COLOR=#4f8f00]command[/COLOR]) [B]contains[/B] " packets received, 0.0% packet loss") [B]then[/B]
                    [COLOR=#012fbe][B]mount volume[/B][/COLOR] "smb://admin:[email protected]/share"
                    [B]exit[/B] [B]repeat[/B]
                [B]else[/B]
                    [COLOR=#0433ff][B]delay[/B][/COLOR] 1
                [B]end[/B] [B]if[/B]
            [B]on[/B] [B]error[/B] [COLOR=#4f8f00]err[/COLOR]
                [COLOR=#0433ff][B]log[/B][/COLOR] [COLOR=#4f8f00]err[/COLOR]
                [B]if[/B] [COLOR=#4f8f00]i[/COLOR] [B]is[/B] [COLOR=#4f8f00]maxTry[/COLOR] [B]then[/B]
                    [COLOR=#012fbe][B]display notification[/B][/COLOR] "Es konnte keine Verbindung mit dem NAS aufgebaut werden" [COLOR=#012fbe]with title[/COLOR] "Fehler" [COLOR=#012fbe]subtitle[/COLOR] "NAS nicht erreichbar"
                [B]else[/B]
                    [COLOR=#0433ff][B]delay[/B][/COLOR] 1
                [B]end[/B] [B]if[/B]
            [B]end[/B] [B]try[/B]
        [B]end[/B] [B]repeat[/B]
    [B]else[/B]
[COLOR=#5E6161][COLOR=#000000]        [/COLOR]-- Wir sind nicht zu Hause[/COLOR]
        [COLOR=#012fbe][B]display notification[/B][/COLOR] "Wir sind nicht zu Hause"
    [B]end[/B] [B]if[/B]
[B]end[/B] [B]if[/B]
 

Pill

Adams Parmäne
Registriert
07.07.12
Beiträge
1.310
3 Bedingungen kannst du so prüfen:

Code:
[B]set[/B] [COLOR=#4F8F00]x[/COLOR] [B]to[/B] 1
[B]set[/B] [COLOR=#4f8f00]y[/COLOR] [B]to[/B] 2
[B]set[/B] [COLOR=#4f8f00]z[/COLOR] [B]to[/B] [COLOR=#812fdc][I]false[/I][/COLOR]


[B]if[/B] {[COLOR=#4f8f00]x[/COLOR] [B]is[/B] 1, [COLOR=#4f8f00]y[/COLOR] [B]is[/B] 2, [COLOR=#4f8f00]z[/COLOR] [B]is[/B] [COLOR=#812fdc][I]false[/I][/COLOR]} [B]is[/B] {[COLOR=#812fdc][I]true[/I][/COLOR], [COLOR=#812fdc][I]true[/I][/COLOR], [COLOR=#812fdc][I]true[/I][/COLOR]} [B]then[/B]
[COLOR=#5E6161][COLOR=#000000]	[/COLOR]--do something[/COLOR]
[B]end[/B] [B]if
[/B]

Dass dein Skript überhaupt funktioniert, wundert mich ehrlich gesagt, und zwar aufgrund dieser Zeile:

set SSID to do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $3}'"

So wie ich das sehe, müsste da statt print $3 nämlich print $2 stehen:


set SSID to do shell script "airport -I | awk '/ SSID: / {print $2}'"


Eventuell liegt der Fehler hier:


set command to "ping -c1 -t2 192.168.178.25" -- NAS anpingen

das -t2 setzt einen Timeout von 2 Sekunden (das habe ich mal mit reingeschmuggelt), eventuell ist das für dein Netzwerk zu kurz?
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Hallo,

ich habe 2 WLAN-Netze, deren SSID jeweils aus 3 Worten bestehen, die sich im 2. Wort unterscheiden.

z.B.:

Mein erstes WLAN
Mein zweites WLAN

Der Code von mir liest hier dann also "erstes" und "zweites" aus - das funktioniert bei mir sehr gut :)

Deine Anmerkung werde ich gleich einmal testen.
 

SPQRInc

Empire
Registriert
24.10.13
Beiträge
85
Auch mit -t5 tritt der Fehler weiter auf :(

Gibt es denn die Möglichkeit auszulesen, wo das Problem genau liegt?