Behöver hjälp med ett Apple-script

Tråden skapades och har fått 14 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • 2014-08-21 17:17

Jag kör en vpn-tjänst som använder sig av Tunnelblick.
Jag undrar om någon kan hjälpa mig med ett script som stänger av t.ex. Firefox, Safari, när Tunnelblick kopplar ner vpn-tjänsten.
Alltså ett script som körs hela tiden i bakgrunden och kontrollerar att Tunnelblick har vpn-tjänsten uppkopplad. Om vpn-tjänsten är nedkopplad ska Firefox och Safari stängas ned.

Tack på förhand.

Senast redigerat 2014-09-14 18:45
  • Medlem
  • Huddinge
  • 2014-08-21 17:47

Något liknande det här?
Byt ut lo0 en0 en1 tun0 mot vad ifconfig -lu ger dig i terminalen medan du är uppkopplad mot din vpn.

on idle
	set activeInterfaces to do shell script "ifconfig -lu"
	if activeInterfaces is not "lo0 en0 en1 tun0" then
		tell application "Firefox" to quit
		tell application "Safari" to quit
	end if
end idle
  • Medlem
  • 2014-08-21 17:59

Tack för ditt svar.
Betyder det att varje gång jag kör igång Tunnelblick så måste jag gå in i terminalen och ta reda på "ifconfig -lu " ger mig?
Hur ofta kontrollera scripten uppkopplingen? Varje sekund?
Om min uppkoppling heter "VPN" i Tunnelblicks konfiguration, kan man på något sätt bara köra igång scripten så kollar den att "VPN" är uppkopplad? Alltså utan att behöva gå in i terminalen?

Tack på förhand.

Ursprungligen av joakimo:

Något liknande det här?
Byt ut lo0 en0 en1 tun0 mot vad ifconfig -lu ger dig i terminalen medan du är uppkopplad mot din vpn.

on idle
	set activeInterfaces to do shell script "ifconfig -lu"
	if activeInterfaces is not "lo0 en0 en1 tun0" then
		tell application "Firefox" to quit
		tell application "Safari" to quit
	end if
end idle
  • Medlem
  • Huddinge
  • 2014-08-21 18:34

Så länge din uppkoppling är densamma ska du inte behöva ändra något i scriptet, efter att du lagt till dina interfaces.

  • Medlem
  • 2014-08-21 19:07

Så om min VPN får olika ip-adresser varje gång jag kopplar så ska jag ändå inte behöva ändra i scriptet?
Vad menas med interfaces?

Tack på förhand.

Ursprungligen av joakimo:

Så länge din uppkoppling är densamma ska du inte behöva ändra något i scriptet, efter att du lagt till dina interfaces.

  • Medlem
  • 2014-08-21 19:19

Jag provade scripten men du stänger inte ned programmen när VPN-uppkoppling bryts.
Hur frekvent kontrollerar scripten uppkopplingen?

Tack på förhand.

Ursprungligen av joakimo:

Något liknande det här?
Byt ut lo0 en0 en1 tun0 mot vad ifconfig -lu ger dig i terminalen medan du är uppkopplad mot din vpn.

on idle
	set activeInterfaces to do shell script "ifconfig -lu"
	if activeInterfaces is not "lo0 en0 en1 tun0" then
		tell application "Firefox" to quit
		tell application "Safari" to quit
	end if
end idle
  • Medlem
  • 2014-08-21 19:25

Jag hittade detta nedanstående scriptet på nätet.
Någon som kan hjälpa mig att modifiera så att scripten bara kontrollerar att vpn-uppkoppling är igång samt stänger ner Firefox och Safari när vpn-uppkopplingen bryts?
Jag behöver inte uppkopplingsfunktionen i scripten. Jag kopplar upp manuellt.
Tack på förhand.

  • Medlem
  • Huddinge
  • 2014-08-21 19:29
Ursprungligen av gant:

Jag provade scripten men du stänger inte ned programmen när VPN-uppkoppling bryts.
Hur frekvent kontrollerar scripten uppkopplingen?
Tack på förhand.

Kontrollera så att raden med dina interfaces är rätt.

Med return kan du ställa in hur ofta scriptet ska kolla av anslutningen.

on idle
	set activeInterfaces to do shell script "ifconfig -lu"
	if activeInterfaces is not "lo0 en0 en1 tun0" then
		tell application "Firefox" to quit
		tell application "Safari" to quit
	end if
	return 15
end idle
  • Medlem
  • 2014-08-21 19:34

Visst är det så att man ska:
1. spara scriptet med ändelsen .app
2. Kompilera
3. Köra

Tack på förhand.

Ursprungligen av joakimo:

Kontrollera så att raden med dina interfaces är rätt.

Med return kan du ställa in hur ofta scriptet ska kolla av anslutningen.

on idle
	set activeInterfaces to do shell script "ifconfig -lu"
	if activeInterfaces is not "lo0 en0 en1 tun0" then
		tell application "Firefox" to quit
		tell application "Safari" to quit
	end if
	return 15
end idle
  • Medlem
  • 2014-08-21 22:28

Nu har jag fått det att fungera.

Men när "config" är nedkopplad stängs även själva scripten ned.

Någon som vet hur man kan få scripten att köra trots att vpn-kopplingen är nere?

När jag lägger till "on idle" i början och "end idle" i slutet så körs inte scripten. Någon som har svar?

Edit: Det verkar som att det räcker med att man kryssar i "Lämna öppet efter körhanteraren" när man sparar scripten så stängs inte scripten av.

Tack på förhand.

tell application "Tunnelblick"
get state of configuration 1 whose name = "config"
if result = "connected" then repeat until result = "exiting"
delay 1
get state of configuration 1 whose name = "config"
end repeat
if result = "exiting" then
tell application "Safari"
quit
tell application "Opera"
quit
end tell
end tell
end if
return 1
end tell

Senast redigerat 2014-08-21 23:28
  • Medlem
  • 2014-09-14 18:22

Du måste ha med en run handler:

on run
	idle
end run

on idle
	display dialog "Hej" giving up after 1
	return 3
end idle

on quit
	continue quit
end quit

Quit är valfri men praktisk om man vill kunna stänga av appen.

  • Medlem
  • 2014-09-14 18:41

Tack för ditt svar.
Jag är inte bra på programmering, var i mitt script ska jag infoga dina rader?

Tack på förhand.

Ursprungligen av Baron:

Du måste ha med en run handler:

on run
	idle
end run

on idle
	display dialog "Hej" giving up after 1
	return 3
end idle

on quit
	continue quit
end quit

Quit är valfri men praktisk om man vill kunna stänga av appen.

  • Medlem
  • 2014-09-14 18:47

Du tar mitt skript men byter ut min idle handler (från och med "on idle" till och med "end idle") och ersätter med den idle handler du hade ovan, om den koden nu fungerade.

on idle
tell application "Tunnelblick"
	get state of configuration 1 whose name = "config"
	if result = "connected" then repeat until result = "exiting"
		delay 1
		get state of configuration 1 whose name = "config"
	end repeat
	if result = "exiting" then
		tell application "Safari"
			quit
			tell application "Opera"
				quit
			end tell
		end tell
	end if
	return 1
end tell
end

Fast jag ser nu att du har fått det att fungera ändå.

  • Medlem
  • 2014-09-14 18:58

Med "on idle" och "end idle" så fungerar inte mitt script. Jag vet inte varför, jag testade det när jag skrev mitt script. Därför postade jag mitt script utan "idle".
Tack för ditt tips.

Ursprungligen av Baron:

Du tar mitt skript men byter ut min idle handler (från och med "on idle" till och med "end idle") och ersätter med den idle handler du hade ovan, om den koden nu fungerade.

on idle
tell application "Tunnelblick"
	get state of configuration 1 whose name = "config"
	if result = "connected" then repeat until result = "exiting"
		delay 1
		get state of configuration 1 whose name = "config"
	end repeat
	if result = "exiting" then
		tell application "Safari"
			quit
			tell application "Opera"
				quit
			end tell
		end tell
	end if
	return 1
end tell
end

Fast jag ser nu att du har fått det att fungera ändå.

  • Medlem
  • 2014-09-14 19:56

Som sagt, du måste ha en "on run"-del om du har en "on idle"-del.

1
Bevaka tråden