ubuntuusers.de

windows batch in shell übersetzen :) reconnect script

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

HixC

Avatar von HixC

Anmeldungsdatum:
24. Mai 2008

Beiträge: 51

Hi Leute, habe hier ein script um eine neue IP zu bekommen. Unter Windows läuft das gut und jetzt versuch ich es auch unter Ubuntu zum laufen zu bekommen, um es dann mit dem jdownloader auszuführen.

Hier die Windows batch:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
@echo off & SETLOCAL

rem - Warmstart Kabel Modem WebSTAR EPX (DPX, DPC, EPC) 2203
curl -d "SADownStartingFrequency=594000000" http://192.168.100.1/goform/gscan

rem Zufallsgenerator für Mac6
set /a zufall=%random% %% 99
if %zufall% LSS 10 set /a zufall=%zufall%+27

rem Zuweisung einer neues Mac Adresse
curl "http://192.168.0.1/login.php" -d "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=xxxx&login=Anmelden&VER_CODE="
curl "http://192.168.0.1/bsc_wan.php" -d "ACTION_POST=DHCP&hostname=DIR-300&clonemac=00%%3A26%%3A5a%%3A38%%3A5f%%3A%zufall%"
curl "http://192.168.0.1/bsc_wan.xgi?random_num=2011.7.13.6.35.1&exeshell=submit%%20COMMIT&exeshell= submit%%20WAN"

PAUSE

ENDLOCAL

curl habe ich für Ubuntu schon installiert und das scheint auch zu funktionieren. für die zufallsvariable hab ich an so was gedacht:

1
2
3
4
5
6

#!/bin/sh

zufall=$(($RANDOM % 100))

exit 0

bekomme aber beim ausführen diesen fehler:

arithmetic expression: expecting primary: " % 100"

Also ist mein eines Problem diese Zufallszahl zu erzeugen und das andere diese korrekt in diese Zeile einzubinden:

1
curl "http://192.168.0.1/bsc_wan.php" -d "ACTION_POST=DHCP&hostname=DIR-300&clonemac=00%%3A26%%3A5a%%3A38%%3A5f%%3A%zufall%"

thx for helping 😀

DiBo33

Anmeldungsdatum:
16. Juni 2006

Beiträge: 1827

bekomme aber beim ausführen diesen fehler:

Nimm mal nicht /bin/sh sondern /bin/bash

... und das andere diese korrekt in diese Zeile einzubinden:

statt %zufall% nimm $zufall

HixC

(Themenstarter)
Avatar von HixC

Anmeldungsdatum:
24. Mai 2008

Beiträge: 51

Das hat schon mal geholfen! Ich bekomme dennoch keine neue IP.

die Zahl darf nicht einstellig sein, daher wollte ich das so lösen:

1
2
3
if [ $zufall -lt 10 ]; 
then $zufall=$zufall+27
fi

bekomme aber diesen Fehler: ./reconnect.sh: Zeile 8: -lt: Einstelliger (unärer) Operator erwartet.

Das Skript sieht dann so aus:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash


curl -d "SADownStartingFrequency=594000000" http://192.168.100.1/goform/gscan

echo zufall=$(($RANDOM % 100))

if [ $zufall -lt 10 ]; 
then $zufall=$zufall+27
fi


curl "http://192.168.0.1/login.php" -d "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=xxxx&login=Anmelden&VER_CODE="

curl "http://192.168.0.1/bsc_wan.php" -d "ACTION_POST=DHCP&hostname=DIR-300&clonemac=00%%3A26%%3A5a%%3A38%%3A5f%%3A$zufall"

curl "http://192.168.0.1/bsc_wan.xgi?random_num=2011.7.13.6.35.1&exeshell=submit%%20COMMIT&exeshell= submit%%20WAN"


exit 0

keine Ahnung, ob curl das macht, was es soll... :/

DiBo33

Anmeldungsdatum:
16. Juni 2006

Beiträge: 1827

versuchs mal so

1
2
3
if [ $zufall -lt 10 ]; then
  zufall=$(($zufall+27))
fi

riffraff

Avatar von riffraff

Anmeldungsdatum:
1. Oktober 2006

Beiträge: 486

Wohnort: Im kühlen Norden

Ich verstehe zwar nicht wofür da eine Zufallszahl benötigt wird ☺, wollte aber mal loswerden wie man eine zufaellige Zahl zwischen zwei Werten erzeugen kann.

1
2
3
4
5

hoechste=150
niedrigste=10
newrand=$[ ( $RANDOM % ( $[ $hoechste - $niedrigste ] + 1 ) ) + $niedrigste ]
echo "Neue Zufallszahl ist $newrand"

Damit koennte man auch den Mindestwert angeben und einen Maximalwert. Die Zufallszahl liegt dann halt immer dazwischen irgendwo. Im Bsp. zwischen 10 und 150.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

Was er sagen will, ist:

1
zufall=$((RANDOM % 90+10))

erzeugt eine 2-stellige Zufallszahl von 10-99 incl.

HixC

(Themenstarter)
Avatar von HixC

Anmeldungsdatum:
24. Mai 2008

Beiträge: 51

die if abfrage will einfach nicht funktionieren... bekomme weiterhin diesen fehler!

Aber die Version von riffraff klappt ☺

@riffraff die Zahl wird benötigt um die letzte Stelle der MAC-Adresse des Routers zu ändern, damit das Modem nach dem restart einen "neuen" Router sieht und eine neue IP anfordert ☺ klar, man könnte auch immer zwischen zwei Zahlen wechseln oder so...

Das skript läuft nun, leider bekomme ich immernoch keine neue IP.

hmm muss wohl was mit curl zu tun haben. Der Modem restart scheint zu klappen, aber der Router bekommt keine neue MAC...

achso, wie kann ich denn die Ausgabe im terminal in eine datei pipen?

DiBo33

Anmeldungsdatum:
16. Juni 2006

Beiträge: 1827

Da im Batch von Windows Variablen mit % angesprochen wird muss das %-Zeichen bei der Übergabe maskiert werden, das geschieht durch %%, ersetze also in allen curl Aufrufe die %% durch ein einfaches %.

achso, wie kann ich denn die Ausgabe im terminal in eine datei pipen?

Einfach mit einer Pipe > eine doppelte Pipe >> hängt die Ausgabe an eine bestehende Datei an.

HixC

(Themenstarter)
Avatar von HixC

Anmeldungsdatum:
24. Mai 2008

Beiträge: 51

DiBo33 schrieb:

Da im Batch von Windows Variablen mit % angesprochen wird muss das %-Zeichen bei der Übergabe maskiert werden, das geschieht durch %%, ersetze also in allen curl Aufrufe die %% durch ein einfaches %.

Ja, das hat funktioniert!

achso, wie kann ich denn die Ausgabe im terminal in eine datei pipen?

Einfach mit einer Pipe > eine doppelte Pipe >> hängt die Ausgabe an eine bestehende Datei an.

also mit der doppelpipe hat nicht das so nicht funktioniert:

1
./reconnect.sh || test.txt

aber so gehts auch

1
./reconnect.sh | tee test.txt

Hier noch das komplette Skript, funktioniert überings für den DIR-300 und das Atlanta Modem 2203

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/bash


curl -d "SADownStartingFrequency=594000000" http://192.168.100.1/goform/gscan

hoechste=99
niedrigste=10
newrand=$[ ( $RANDOM % ( $[ $hoechste - $niedrigste ] + 1 ) ) + $niedrigste ]
echo "Neue Zufallszahl ist $newrand"


curl "http://192.168.0.1/login.php" -d "ACTION_POST=LOGIN&FILECODE=&VERIFICATION_CODE=&LOGIN_USER=admin&LOGIN_PASSWD=XXXX&login=Anmelden&VER_CODE="

curl "http://192.168.0.1/bsc_wan.php" -d "ACTION_POST=DHCP&hostname=DIR-300&clonemac=00%3A26%3A5a%3A38%3A5f%3A$newrand"

curl "http://192.168.0.1/bsc_wan.xgi?random_num=2011.7.13.6.35.1&exeshell=submit%20COMMIT&exeshell= submit%20WAN"

exit 0

Vielen Dank an alle!!!

DiBo33

Anmeldungsdatum:
16. Juni 2006

Beiträge: 1827

also mit der doppelpipe hat nicht das so nicht funktioniert:

öhm: >> != ||

😀

HixC

(Themenstarter)
Avatar von HixC

Anmeldungsdatum:
24. Mai 2008

Beiträge: 51

Achso, kannte bisher nur das | als Pipe ☺

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

man bash sagt allerdings auch:

Pipelines A pipeline is a sequence of one or more commands separated by one of the control operators | or |&. The format for a pipeline is:

[time [-p]] [ ! ] command [ [|⎪|&] command2 ... ]

Für die Umlenkungen < oder > habe ich noch nie 'Pipe' gehört oder gelesen.

DiBo33

Anmeldungsdatum:
16. Juni 2006

Beiträge: 1827

Naja, richtig ist wohl der Terminus Redirection (ist mir nur in dem Moment nicht eingefallen), man möge mir verzeihen 😀

Capet

Anmeldungsdatum:
27. März 2009

Beiträge: 429

Lass mich mal raten: Das Skript bzw. die Funktionalität ist für die Verwendung mit jDownloader bestimmt?

DiBo33

Anmeldungsdatum:
16. Juni 2006

Beiträge: 1827

Capet schrieb:

Lass mich mal raten: Das Skript bzw. die Funktionalität ist für die Verwendung mit jDownloader bestimmt?

öhm:

... um es dann mit dem jdownloader auszuführen.

Antworten |