Skocz do zawartości
ziCk_lodz

Prosty skrypt otwierający link w przeglądarce

Rekomendowane odpowiedzi

Potrzebuję wyprodukować skrypt działający w tle który pingował by adres raz na kilka minut i w razie braku odpowiedzi otwierał link w przeglądarce i kontynuował pingowanie.

 

Jak to najprościej wykonać?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ja bym zrobił w powershellu, ping to jedna instrukcja, otarcie przeglądarki to druga. OK, sparsowanie wyników pinga to kilka dodatkowych. Taki skrypt można sobie odpalić w oknie w tle. Zrobienie z tego usługi windowsowej do chyba przesadna komplikacja, ale jak ma być co kilka minut, to można to wpiąć w harmonogram zadań (czy jak to się teraz nazywwa) i tez będzie dobrze.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ok siłą google ulepiłem takiego Frankensteina z różnych źródeł:

 

$sites = "google.com","youtube.com","hexus.net"
$time = Get-Date -Format G


Foreach ($site in $sites) {

   $ping = Test-Connection -ComputerName $site -Count 4 -ErrorAction SilentlyContinue

   if ($ping) {
      Write-output "$time  [OK]  $site respond to pings" | Out-File 'H:\Liberty-izone\log.txt' -Append
       }Else{
   if (($ping) -ne $true) {
       Write-output "$time [ERROR] $site failed to respond. Attempting reconnect" | Out-File 'H:\Liberty-izone\log.txt' -Append
       $IE=new-object -com internetexplorer.application 
       $IE.navigate2("moj_adres_url") 
       $IE.visible=$false
       $IE.close
       }
   }   
}

Generalnie skrypt z grubsza robi to co chcę żeby robił (czyt. działa), ale nie do końca tak jak bym chciał - a nie mam zielonego pojęcia o skryptowaniu PowerShella (albo czegokolwiek innego...)

 

Problemy:

1) po failu pinga google.com nie próbuje pingować innych stron (albo próbuje, ale nie zapisuje wyniku w logach)

22/10/2019 21:21:53 [ERROR] google.com failed to respond. Attempting reconnect
22/10/2019 21:22:14  [OK]   google.com respond to pings

2) wydaje mi się (jak już wspomniałem, nie mam o tym pojęcia), że pierwszy fail pinga powoduje otworzenie linku w przeglądarce - czyt. jeżeli z 4 pingów jeden sfailuje to link jest otwierany. Chciałbym, żeby skrypt brał całość pod uwagę, a nie reagował przy pierwszym failu

3) $IE.close wypluwa error i nie zamyka procesu Internet Explorera. edit: podmieniłem na Stop-Process -Name "iexplore" -Force i hula.

4) Nie wiem jak do końca jak ustawić, żeby skrypt się odpalał co 5 minut + nie otwierał okna konsoli (wszystko powinno dziać się w tle, bez deaktywowania obecnie aktywnego okna)

Edytowane przez ziCk_lodz

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

koniecznie potrzebujesz tego ie? czy chcesz, żeby odpalił się skrypt php pod tym adresem?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

koniecznie potrzebujesz tego ie? czy chcesz, żeby odpalił się skrypt php pod tym adresem?

A to tak się da? :E

 

 

edit:

zamiast

$IE.Close()

 

dodałem:

       Start-Sleep -Seconds 5
       Stop-Process -Name "iexplore" -Force 
       Stop-Process -Name "ielowutil" -Force

 

I ubija proces po 5 sekundach - best start-sleep proces był ubijany zanim przeglądarka była w stanie otworzyć adres :thumbup::E

Edytowane przez ziCk_lodz

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

4) Nie wiem jak do końca jak ustawić, żeby skrypt się odpalał co 5 minut + nie otwierał okna konsoli (wszystko powinno dziać się w tle, bez deaktywowania obecnie aktywnego okna)

Dodałem skrypt do Harmonogramu Zadań, żeby się potwarzał co 5 minut, ale po odpaleniu skrypt lata non-stop. Czyt. otwiera adres url w IE, ale już nie zamyka procesu ani nie zapisuje nic w logach - za to skrypt odpala się średnio co kilkanaście sekund. :hmm:

 

 

 

edit:

Idąc za sugestią @januzi i spróbowaniem wget, okazuje się, że PowerShell ma swój odpowiednik. Zastąpiłem całą zmienną $IE na Invoke-WebRequest i hula.

 

Invoke-WebRequest -UseBasicParsing mój_adres_url

 

Teraz tylko jak poprawnie ustawić pingowanie kilku stron i wykonanie akcji dopiero po braku odpowiedzi ze wszystkich, bo ten potworek którego wkleiłem wcześniej nie sprawdza nic poza pierwszym adresem.

Edytowane przez ziCk_lodz

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dobra przepisałem to z nowo zdobytą wiedzą:

$time = Get-Date -Format G
$list = "google.com", "hotmail.com", "yahoo.com"
$ping = Test-Connection -ComputerName $list -Count 1 -BufferSize 6 -Quiet

   if (($ping -eq $True).Count -gt 0) {
       Write-output "$time [OK] Connection success" | Out-File 'C:\log\log.txt' -Append
   } else {
       Write-Output "$time [ERROR] failed to respond. Attempting to reconnect" | Out-File 'C:\log\log.txt' -Append
       Invoke-WebRequest -UseBasicParsing https://moj_adres_url
   }

 

Pinguje strony jedną po drugiej, daje output True albo False, sprawdza czy jest chociaż jedno True i jeżeli jest to nie robi nic (chyba :D), a jak nie ma żadnego True to wykonuje Invoke-WebRequest.

 

Nie mogę teraz zrobić, żeby skrypt się odpalał co 5 minut. Wrzuciłem w Harmonogram, ustawiłem czas, najwyższe przywileje, ale nic się nie dzieje. Skrypt działa, bo manualne odpalenie z Harmonogramu wykonuje go poprawnie. Jakieś sugestie? edit: nie wiem dlaczego skrypt się nie odpala od użytkownika z przywilejami administracyjnymi, ale po zmianie użytkownika na SYSTEM skrypt działa bez zażutu. :hmm:

Edytowane przez ziCk_lodz

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Trzeba by się wgłębić w działanie systemu. Kiedyś pod linuksem mieliśmy przypadek, ze program odpalany "z palca" działał bez problemu, a uruchamiany ze skryptu startowego systemu wywalał się. Problem tkwił w dostępie do konsoli, która z poziomu skryptów startowych jest inaczej obsługiwana, więc przeoczony wypis na ekran prowadził do błędu.

W Win może być podobnie, że skrypty uruchamiane z harmonogramu działają w inne powłoce niż użytkownika. Ale to są moje domysły, trzeba by pogrzebać w sieci.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Teraz mi powiedzcie jak to co zrobiłem zapętlić, żeby w razie braku połączenia powtarzało procedurę do skutku (poza harmonogramem) :E

Edytowane przez ziCk_lodz

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Na podstawie togo co masz ale z zaznaczeniem, ze powershella nie znam, więc będą błędy.

$time = Get-Date -Format G
$list = "google.com", "hotmail.com", "yahoo.com"
$ping = Test-Connection -ComputerName $list -Count 1 -BufferSize 6 -Quiet

   while(($ping -eq $False).Count -gt 0) { //<---------!!!! tutaj do poprawy, zmieniłem if na while i True na False
     {
       Write-Output "$time [ERROR] failed to respond. Attempting to reconnect" | Out-File 'C:\log\log.txt' -Append
       Invoke-WebRequest -UseBasicParsing https://moj_adres_url
       $ping = Test-Connection -ComputerName $list -Count 1 -BufferSize 6 -Quiet //<-------- ponowne wykonanie pinga
     }
Write-output "$time [OK] Connection success" | Out-File 'C:\log\log.txt' -Append

Pomysł polega na zamianie if-a na pelę while i sprawdzeniu przeciwnego warunku, czyli że nie udało się spingować. Wtedy robisz akcję jak do tej pory i na koniec pętli jeszcze raz puszczasz pinga.

Jeżeli ping się uda, to pętla jest przerywana i wykona się kod znajdujący się za nią.

 

Zapewne udałoby się upchnąć robienie pinga w warunek pętli ale nie wiem czy jest sens tak motać ;)

Edytowane przez Bono[UG]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

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

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

  • Tematy

  • Odpowiedzi

    • Świetne rady, autor tematu gra w 3440x1440, więc jakim cudem warto zmieniać 4070Ti na 4070Ti Super, skoro premiera RTX 5000 jest tak nieodległa ? Zanim braknie mu 12GB VRAM w tej rozdzielczości to będzie premiera RTX 6000. Więc @andriejek69 jak masz zmieniać teraz kartę to albo coś dużo mocniejszego, albo czekaj na nowe RTXy. Chyba, że faktycznie chcesz pograć w Cyberpanka z Path Tracingiem, ale tam nawet 4070Ti Super z 16GB to będzie za mało. Zrobisz ja uważasz, ale osobiście uważam taką zmanię za kompletnie bezsensowną, bo obecna kara Ci wystarczy do tej rozdzielczości, a jak zmieniać to na 4090, żeby faktycznie poczuć różnicę, teraz dostaniesz 10% to wydajności. Jedyna opcja to sprzedaż obecnej karty za dobrą cenę i niewielka dopłata.
    • Trudne się wylosowało... Monitorów z tunerem jest jak na lekartwo a szybszych niz 60hz tym bardziej. Nie ma mowy też o oledzie ani miniledzie z tunerem chyba że chodzi o telewizor to już prędzej coś znajdziesz.  Nie podałeś specyfikacji swojego komputera to też niezbyt można powiedzieć czy poradzi sobie z monitorem 4k np. (Samsung monitor m7 i m8) mają smart tv ale tunera już nie mają... Dodatkowo są na matrycy VA co nie każdemu może przypaść do gustu. Najlepszym rozwiązaniem będzie kupno możliwie najlepszego monitora na miniledzie/oled (jeżeli nadal mówimy o budżecie 4000zł) i jakiegoś smartboxa (googletv) z tunerem i podłączenie go do monitora poprzez HDMI.
    • Witam Proszę o ocenę zestawu do grania w 1440p i ewentualne propozycje zmian, chciałabym żeby wszystko zamknęło się w 7tys. Preferuję połączenie Intel/Nvidia, najlepiej jak najmniej RGB, dyski już posiadam (2 SSD Sata). Procesor i5 14600KF Karta Gigabyte GeForce RTX 4070 Super Windforce OC 12GB Płyta główna MSI B760 Gaming Plus WIFI lub MSI MAG B760 Tomahawk WIFI (wcześniej rozważałam również Gigabyte B760 Gaming X AX) Zasilacz Seasonic Focus GX - 750W Lexar Ares RGB 32GB 6400MHz CL32 Obudowa Genesis Irid 505F Z chłodzeniem mam problem, ponieważ chciałam zakupić Deepcool'a AK620, jednak nie jest dostępny w sklepie komputronika (sklep wybrałam ze względu możliwości odbioru komputera w moim mieście). Niestety ten ma dość ograniczony wybór chłodzeń. Tak samo jak widać mocno zastanawiam się nad płytą główną, jestem otwarta na propozycje.
    • https://www.rtings.com/monitor/learn/research/vrr-flicker  
    • Ja czego nie rozumiem? No ja rozumiem jaka jest różnica pomiędzy odbiornikiem prądu a generatorem. Z tego co widzę hybrydy się zgłasza. Czy Ci się to podoba czy nie. To nie jest offgrid.  Tak samo jak magazyn energii. Mimo iż ludzie używają je wewnątrz domu, to muszą być zgłaszane.  To że chińczyk mówi, że falownik nie wysyła nadmiaru energii poza sieć nie ma żadnego znaczenia jeśli podepniesz to do sieci.  Czy na rondo nie ma liczników? Na enmasz umowy tam z energetyka? Nie da się zamontować normalnej instalacji? Co powiedział Ci dostawca prądu? Jeśli sąsiada z działki wywali choćby radio na drugi tydzień po montażu Twojego lewego PV, to spodziewaj się problemów.  Jak udowodnił aż że Twój chiński szajs jest przekozak wówczas? Będziesz miał na to jakieś papiery?  Ze specyfiki pracy jaką oczekujesz. Ta sama zasada działania Cię interesuje. Będziesz szukał paneli gruntowych? A czym różnią się takie od paneli dachowych albo balkonowych? Zestaw balkonowy to jest to co szukać powinieneś. Bo zestawów RODo nie robi a raczej?  Zacznijmy od tego, że zacząłeś od złej strony, bo zamiast falownika i budowania hybrydy, podpina się takie rzeczy prosto w panele. Pompa na prąd stały o szerokim napięciu działania pyrka sobie jak ma napięcie i tyle. 
  • Aktywni użytkownicy

×
×
  • Dodaj nową pozycję...