Hallo allerseits,
Ich hoffe, daß ich in der richtigen Rubrik gelandet bin. Meine Frage ist, ob ich bash-Skripte von Linux, speziell das unten angehängte, auch auf einem Mac (ca. 3 Jahre alt) zum laufen bringen kann.
Die bash scheint es ja zu geben, und ich habe etwas von "fink" gelesen, das eine GNU-Umgebung, apt und anderes unter Mac OS bereitzustellen scheint, stimmt das? Der größte Haken wird wohl die Verwendung von iptables (Firewall-Regeln) und zenity(Fenster-Dialoge, setzt Gnome voraus) sein. Gibt es vielleicht, falls alles andere geht, Alternativen zu diesen Programmen?
Oder kennt ihr vielleicht einfach ein anderes Programm, mit dem man sich selbst ein Zeitlimit beim Internetzugang pro Tag setzen kann?
beste Grüße,
M
---------------------------------------------------------
#!/bin/bash
tagesration=45
konto=`cat ~/Skripte/DATA/netznutz/zeitkonto`
zeit=`cat ~/Skripte/DATA/netznutz/kontozeit`
jetztzeit=`date +%Y%m%d`
echo `date +%T`" - Programmstart"
iptables -L | grep -q "dpt:www"
if [ $? -eq 1 ]; then
echo `date +%T`" - Netz war offen, wird geschlossen."
iptables -A OUTPUT -p tcp --dport 80 -j DROP
fi
if [ $zeit -lt $jetztzeit ]; then
konto=$tagesration
echo `date +%T`" - Heute ist ein neuer Tag"
echo $jetztzeit > ~/Skripte/DATA/netznutz/kontozeit
echo $konto > ~/Skripte/DATA/netznutz/zeitkonto # Das verhindert Inkonsistenz bei Abbrüchen
fi
warumenden=0
while [ $warumenden -ne 1 ]
do
paket=`zenity --entry --title="Netznutz Abfrage" --text="Noch $konto Minuten übrig. Wieviele braucht's denn?"`
if [ $? -eq 1 ]; then echo `date +%T`" - Abbruch!"; exit 0; fi
paket=${paket//[^0-9]/}
# eliminiert Stringeingaben
if [ -z $paket ]; then echo `date +%T`" - Keine Eingabe. Nochmal machen."; continue; fi
if [ $paket -eq 0 ]; then echo `date +%T`" - Netter Versuch, Al!"; continue; fi
if [ $konto -lt $paket ]; then
zenity --info --title="Möööp." --text "Soviel haben Sie doch gar nicht mehr!"
continue
fi
echo -n `date +%T`" - Schalte http an - für $paket Minuten"
iptables -D OUTPUT -p tcp --dport 80 -j DROP
let konto=$konto-$paket
echo " - danach noch "$konto" Minuten übrig"
echo $konto > ~/Skripte/DATA/netznutz/zeitkonto
let abschnitt=$paket*3
for xy in 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 99
do
echo $xy
sleep $abschnitt
done | zenity --progress --title="Netznutz läuft" --text "$paket Minuten ab `date +%T`" --timeout=`let sekunden=60*$paket; echo $sekunden`
echo `date +%T`" - Schalte http ab"
iptables -A OUTPUT -p tcp --dport 80 -j DROP
zenity --info --title="Netznutz Abschaltung" --text "Netz ist aus. Es bleiben $konto Minuten."
done
Ich hoffe, daß ich in der richtigen Rubrik gelandet bin. Meine Frage ist, ob ich bash-Skripte von Linux, speziell das unten angehängte, auch auf einem Mac (ca. 3 Jahre alt) zum laufen bringen kann.
Die bash scheint es ja zu geben, und ich habe etwas von "fink" gelesen, das eine GNU-Umgebung, apt und anderes unter Mac OS bereitzustellen scheint, stimmt das? Der größte Haken wird wohl die Verwendung von iptables (Firewall-Regeln) und zenity(Fenster-Dialoge, setzt Gnome voraus) sein. Gibt es vielleicht, falls alles andere geht, Alternativen zu diesen Programmen?
Oder kennt ihr vielleicht einfach ein anderes Programm, mit dem man sich selbst ein Zeitlimit beim Internetzugang pro Tag setzen kann?
beste Grüße,
M
---------------------------------------------------------
#!/bin/bash
tagesration=45
konto=`cat ~/Skripte/DATA/netznutz/zeitkonto`
zeit=`cat ~/Skripte/DATA/netznutz/kontozeit`
jetztzeit=`date +%Y%m%d`
echo `date +%T`" - Programmstart"
iptables -L | grep -q "dpt:www"
if [ $? -eq 1 ]; then
echo `date +%T`" - Netz war offen, wird geschlossen."
iptables -A OUTPUT -p tcp --dport 80 -j DROP
fi
if [ $zeit -lt $jetztzeit ]; then
konto=$tagesration
echo `date +%T`" - Heute ist ein neuer Tag"
echo $jetztzeit > ~/Skripte/DATA/netznutz/kontozeit
echo $konto > ~/Skripte/DATA/netznutz/zeitkonto # Das verhindert Inkonsistenz bei Abbrüchen
fi
warumenden=0
while [ $warumenden -ne 1 ]
do
paket=`zenity --entry --title="Netznutz Abfrage" --text="Noch $konto Minuten übrig. Wieviele braucht's denn?"`
if [ $? -eq 1 ]; then echo `date +%T`" - Abbruch!"; exit 0; fi
paket=${paket//[^0-9]/}
# eliminiert Stringeingaben
if [ -z $paket ]; then echo `date +%T`" - Keine Eingabe. Nochmal machen."; continue; fi
if [ $paket -eq 0 ]; then echo `date +%T`" - Netter Versuch, Al!"; continue; fi
if [ $konto -lt $paket ]; then
zenity --info --title="Möööp." --text "Soviel haben Sie doch gar nicht mehr!"
continue
fi
echo -n `date +%T`" - Schalte http an - für $paket Minuten"
iptables -D OUTPUT -p tcp --dport 80 -j DROP
let konto=$konto-$paket
echo " - danach noch "$konto" Minuten übrig"
echo $konto > ~/Skripte/DATA/netznutz/zeitkonto
let abschnitt=$paket*3
for xy in 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 99
do
echo $xy
sleep $abschnitt
done | zenity --progress --title="Netznutz läuft" --text "$paket Minuten ab `date +%T`" --timeout=`let sekunden=60*$paket; echo $sekunden`
echo `date +%T`" - Schalte http ab"
iptables -A OUTPUT -p tcp --dport 80 -j DROP
zenity --info --title="Netznutz Abschaltung" --text "Netz ist aus. Es bleiben $konto Minuten."
done