Skocz do zawartości
Anonim8

Skrypt połączenia z internetem

Rekomendowane odpowiedzi

Uprzejmie proszę, na klęczkach proszę o pomoc. Przypadek nagły, niecierpiący zwłoki.

Otóż używam na Windowsie XP następującego skryptu:

 

@echo off

echo at+cpin="1234">pin

print /d:com4 pin>nul

del pin>nul

ping 127.0.0.1>nul

rasdial/d|rasdial ^

Iplus /phone:*99#>nul

 

Skrypt uruchamia modem Huawe i automatycznie ustanawia połączenie z internetem w trakcie uruchomienia systemu. Umieszczony jest w folderze Autostart. Natomiast ten sam skrypt nie działa na W7.

Stąd moje pytanie dlaczego nie działa? Brak uprawnień? Źle napisany? Na W7 nie ma możliwości, żeby zadziałał?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Stąd moje pytanie dlaczego nie działa? Brak uprawnień? Źle napisany? Na W7 nie ma możliwości, żeby zadziałał?

Jak UAC jest włączony to na pewno nie zadziała z powodu braku uprawnień.Spróbuj użyć harmonogram zadań w tym celu - wybierz uruchamianie skryptu z poziomu konta SYSTEM oraz uruachamianie skryptu przy uruchamianiu systemu lub w trakcie logowania każdego użytkownika.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

UAC jest teraz wyłączony. Wcześniej na właczonym pojawiał się monit w okienku konsoli pt. Odmowa dostępu do C:\System32\cmd.exe

Teraz po wyłaczeniu UAC monitu nie ma i połaczenie z netem nie następuje.

 

Natomiast co do:

 

Spróbuj użyć harmonogram zadań w tym celu - wybierz uruchamianie skryptu z poziomu konta SYSTEM oraz uruachamianie skryptu przy uruchamianiu systemu lub w trakcie logowania każdego użytkownika.

 

Gupi jestem i nie wiem jak dodać zadanie :lol:. Czy istnieje szansa na jakąś przyziemną instrukcje?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Na chwile obecną sytuacja wygląda tak, że nauczyłem się dodawać zadanie do harmonogramu zadań. :lol: Co nie zmieniło faktu, że skrypt nie działa. Nie ustanawia połaczenia. Uparcie grzebałem dalej i wygrzebałem taki wynalazek:

@echo off
SLEEP 20
rem ping -n 30 127.0.0.1 >nul
rasdial "Iplus" "plusgsm" "plusgsm"

 

Z tym skryptem internet łaczy się automatycznie....ale. W oknie konsoli pojawia się najpierw komunikat, że nazwa Sleep lub plik wsadowy nie jest rozpoznawany by za chwilke, połaczenie nastąpiło.

Gdybym mógł prosić biegłych skryptologów o komentarz do nazwy SLEEP, będę wdzięczny. A może wystarczy bez SLEEP?

 

Z ostatniej chwili.

Zmodyfikowałem skrypt. Chodziło mi o możliwośc podania kodu PIN. Teraz jest tak i nic nie wyskakuje. Połaczenie następuje w mgnieniu oka.

 

@echo off
echo at+cpin="1234">pin
rem ping -n 30 127.0.0.1 >nul
rasdial "Iplus" "plusgsm" "plusgsm"

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Żeby Ci zadziałało polecenie sleep musiałbyś zainstalować pakiet Resource Kit dla systemu.

http://ss64.com/nt/sleep.html

 

W tym skrypcie nie używasz żadnej pętli, więc sleep możesz sobie odpuścić. A jak dobrze poszukasz to znajdziesz mniej lub bardziej ciekawe obejścia. A po co jest to zakomentowane polecenie ping? Innymi słowy, usuniesz słówko rem = zacznie działać polecenie ping.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
A po co jest to zakomentowane polecenie ping? Innymi słowy, usuniesz słówko rem = zacznie działać polecenie ping.

 

A co robi które polecenie?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

REM to komentarz.

Wszystko, co znajduje się "na prawo" od rem jest omijane przy wykonywaniu skryptu.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Tak po prawdzie to polecenie ping zostało wstawione jako opcjonalnie dla sleep, wiec możesz je też wywalić. :) Polecenie ping wywala wszystkie komunikaty do pliku nul chyba?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Teraz Panowie Dawid i 300 zgłupiałem. Co mam w końcu wywalić? Rem? Czy to co po Rem. A tak w ogóle, przedstawcie swoje wersje a ja wypróbuje i zaraz dam znać. Tak będzie najprościej. :lol:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Całą linijkę wywal. Jak usuniesz tylko rem to zadziała polecenie ping, które wszystkie komunikaty wywali do pliku nul. Polecenie ping w tym kontekście ma tylko wstrzymać na jakiś czas wykonanie skryptu, a właściwie opóźnić wykonanie następnego polecenia. Polecenie rasdial ma Ci się wykonać, więc po co je opóźniać - masz w tym jakiś cel (jest to związane z linijką wyżej w skrypcie)?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

@echo off
echo at+cpin="1234">pin
rasdial "Iplus" "plusgsm" "plusgsm"

 

:)

 

Działa. Zostaniemy w takim razie przy najkrótszej wersji.

Dzięki za wyjaśnienia. Wreszcie skończę tutka dla wszystkich, którzy łączą się z netem inaczej.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Albo Bat to Exe Converter i zaznaczyć przy wykonywaniu "Invisible application". Jeszcze lepsze rozwiązanie, bo trudniej będzie podejrzeć zawartość pliku (ochrona PIN-u itd.), chociaż nie ma rzeczy niemożliwych. :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Tak jeszcze na marginesie... Gdybyś chciał ukryć wyskakujące okienko cmd, to możesz spróbować użyć języka visual basic scripting. Podpowiedź znajdziesz w połowie postu #23.

 

A jaką nazwe nadać temu plikowi z rozszerzeniem vbs? Taką samą jak pliku bat?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Nazwa skryptu .vbs nie ma znaczenia. Ważniejsze jest jego zawartość, a konkretniej podanie odpowiedniej ścieżki do pliku .bat.

To co proponują DawidS28 i KolegaDudysa jest godniejsze uwagi. :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Nazwa skryptu .vbs nie ma znaczenia. Ważniejsze jest jego zawartość, a konkretniej podanie odpowiedniej ścieżki do pliku .bat.

 

tak wymodziłem ścieżke, ale nie wiem czy dobrze, bo okno jest

Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "cmd /C .\C:\Users\Mathew\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\iplus.bat",0
Set oShell = Nothing

 

Zastosowałem Bat to Exe - okna nie ma. Ale jestem troszkę dociekliwy, więc jakbyście rzucili okiem na zapis vbs, będę wdzięczny.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

oShell.run "cmd /C .\C:\Users\Mathew\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\iplus.bat",0

To co zbędne zaznaczyłem na czerwono. A mogłoby to wyglądać tak... (chociaż nie jestem pewien nazw ze spacjami, a nie mam na razie możliwości tego sprawdzić).

oShell.run "cmd /C %appdata%\Microsoft\Windows\Start Menu\Programs\Startup\iplus.bat",0

Użyłem zmiennej środowiskowej %appdata% = http://pl.wikipedia.org/wiki/Zmienna_środowiskowa = dla windows 7 jest to C:\Users\{username}\AppData\Roaming

Chociaż ja bym umieścił skrypt .vbs tam gdzie skrypt .bat, a do autostartu wrzuciłbym link do skryptu .vbs, a wtedy zapis Ci się uprości:

oShell.run "cmd /C .\iplus.bat",0

Oczywiście musiałbyś skrypt .bat umieścić poza autostartem! :) Przy takiej lokalizacji skryptu .bat wrzucanie tam jeszcze .vbs mija się z celem. Chyba, że czegoś nie rozumiem. :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Oczywiście musiałbyś skrypt .bat umieścić poza autostartem! smile.gif Przy takiej lokalizacji skryptu .bat wrzucanie tam jeszcze .vbs mija się z celem. Chyba, że czegoś nie rozumiem. smile.gif

 

Rozumiecie kumie bardzo dobrze. Zapodałem bata do autostartu. Pozmieniam i zobacze jak działa vbs.

 

Sprawdziłem. Wszystko śmiga jak należy. Okienka nie ma. Internet jest.

Dziekuje za cierpliwość.

Gdybyście chcieli kiedyś zrobić skrypt, który nie działa - chętnie przyjmę zlecenie :lol:

Pozdrawiam

Edytowane przez Belfegor

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Poniżej masz kawałek kodu, który zrobi Ci od razu link do wkazanego pliku. Nie sprawdzałem czy bangla.

http://stackoverflow.com/questions/346107/creating-a-shortcut-for-a-exe-from-a-batch-file

 

Nie ma sensu łączyć go z poprzednim skryptem, ale możesz go użyć w trakcie instalacji docelowego skryptu. Zdaje się, że winrar ma możliwość uruchomienia skryptu przy wypakowaniu. Ale tego nigdy nie robiłem.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi

Tak gwoli ścisłości, nie wydaje się wam, że linijka:

echo at+cpin="1234">pin

nie jest do niczego używana, tworzy co prawda plik o nazwie "pin" ale czy coś się z tym plikiem dalej dzieje?

 

Jeżeli tak to można zastosować sam vbs typu:

 

Dim oShell
Set oShell = WScript.CreateObject ("WSCript.shell")
oShell.run "rasdial Iplus plusgsm plusgsm",0
Set oShell = Nothing

 

nawet jeżeli nie to nadal można uprościć do pojedynczego skryptu bądź tworząc tymczasowy bat bądź stosując taką konstrukcję:

oShell.run "%comspec% /c echo at+cpin=1234>pin | rasdial Iplus plusgsm plusgsm",0

jak widzicie wywaliłem wewnętrzne cudzysłowy bo wysypią skrypt, trzeba by je zastąpić znakami chr(34) a to bardzo gmatwa składnię a same cudzysłowy są tutaj zbędne (jak i echo off bo i tak nie wyświetlamy wyjścia).

 

Jeszcze słowo wyjasnienia o konstrukcji:

oShell.run "cmd /C .\C:\Users\Mathew\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\iplus.bat",0

spacja we fragmencie "Start Menu" powoduje, że ta konstrukcja nie zadziała, na dodatek strasznie trudno się to obchodzi w skryptach, proponowana przez @3oo %appdata% też niewiele da bo zostanie rozwinięta przez komendę, na dodatek można ustawić wewnętrzną zmienną typu "SpecialFolders" link

 

Spacje w ścieżkach prowadzą do następujących konstrukcji - fragment jednego z moich skryptów:

objShell.run "%comspec% /c" & chr(34)& strprogramfiles &"\InstallShield Installation Information\{7F3AD00A-1819-4B15-BB7D-08B3586336D7}\setup.exe"&chr(34) &" "& "/runfromtemp /l0x0009 /uninst",0,true

 

pzdr

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Tak gwoli ścisłości, nie wydaje się wam, że linijka:

echo at+cpin="1234">pin

nie jest do niczego używana, tworzy co prawda plik o nazwie "pin" ale czy coś się z tym plikiem dalej dzieje?

 

Bez tej linijki przy pierwszym logowaniu do sieci modem nie łaczy się z netem. Jeśli nie ma na karcie SIM wymogu podania PINU, wtedy można z wpisu zrezygnować.

Po pierwszym logowaniu kod PIN jest zapamiętywany przez modem. Przy kolejnych logowaniach już nie jest potrzebny.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...