PowerShell odoslanie IP do PHP

Ak hľadáte nejaký softvér do PC prípadne ak s ním máte nejaký problém.

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
pablox
Ultimate člen
Ultimate člen
Príspevky: 1737
Dátum registrácie: 19 Júl 2006, 00:00
Bydlisko: Ruzomberok
Vek: 32
Kontaktovať používateľa:

PowerShell odoslanie IP do PHP

Príspevok od používateľa pablox » 15 Sep 2020, 16:26

Zdravím,
mám script, ktorý kontroluje vonkajšiu IP adresu a v príapde jej zmeny mi posiela mailom novú IP.
Potrebujem do toho scriptu dorobiť časť, ktorá by mi tú IP adresu odoslala na server, kde sa pomocou PHP scriptu uloží do databázy.
V podstate potrebujem, aby PowerShell len zavolal adresu: http://www.pablox.net/writeip.php?ip=zistena_IP

Kód: Vybrať všetko

$scriptpath = $MyInvocation.MyCommand.Definition 
[string]$dir = Split-Path $scriptpath  
set-location $dir

$oldip = gc .\ip.txt
Write-Host "Your previous IP was: $oldip"
$currentip = (New-Object net.webclient).downloadstring("http://api.ipify.org")
while ($currentip -eq '') {$currentip = (New-Object net.webclient).downloadstring("http://api.ipify.org")}
Write-Host "Your current IP is: $currentip"

$smtpServer = "smtp.websupport.sk"
$sender = "sender@sender.net"
$users = "receiver@gmail.com";
$subject = "Your IP $currentip" 
$body = "Previous IP was $oldip" 

if ($oldip -ne $currentip) {
    foreach ($user in $users) {
    Write-Host "Sending email notification to $user" -ForegroundColor Green
    $smtp = New-Object Net.Mail.SmtpClient($smtpServer, 587) 
    $smtp.EnableSsl = $true 
    $smtp.Credentials = New-Object System.Net.NetworkCredential("mail@mail.com", "mail_pwd"); 
    $smtp.Send($sender, $user, $subject, $body)
    }
}

$currentip | Out-File .\ip.txt -Force
Write-Host "New IP saved in file is: $currentip"
Vie mi niekto poradiť, ako upraviť script tak, aby to okrem mailu poslalo aj PHP request na server, kde si to viem ďalej spracovať? Nakoľko to robím na na diaľkovom PC, je trošku problém s testovaní.

Ďakujem.
0
Meranie radiačného pozadia https://radmon.pablox.net/
Moja osobná webstránka http://www.pablox.net
Moja meteostanica http://www.teplomer.pablox.net

Používateľov profilový obrázok
mac26
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1298
Dátum registrácie: 01 Feb 2010, 00:00
Bydlisko: Martin

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa mac26 » 15 Sep 2020, 17:23

nebolo by jednoduchsie sa priamo pripojit na DB a zapisat to rovno do nej?
0

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 986
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa budvar10 » 15 Sep 2020, 17:38

Kód: Vybrať všetko

& php[.exe] skript argumenty
Musíš mať nainštalované PHP. Pozri si možnosti - Apache alebo aj pre IIS.
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6203
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa pocitujlasku » 15 Sep 2020, 19:46

ale no, nezartujte chalani. mat pristupnu db zvonku (co na 99% hostingov nie je mozne), alebo mat php aby zavolalo url.
pozri wget, alebo curl. powershell by mohol mat wget v sebe.
vtedy len das wget adresa a hotovo. pripadne mozes riesit aj http response - co ti vrati server
doparoma, teraz pozeram ten tvoj skript, ved to tam mas. tak ako zavolas url pre zistenie ip, tak isto si zavolas ten svoj skript
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6203
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa pocitujlasku » 16 Sep 2020, 09:24

Pripadne pouzit

Kód: Vybrať všetko

Invoke-WebRequest
Ked by som mal cez den kusok casu, tak ti skusim dat komplet skript
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6203
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa pocitujlasku » 16 Sep 2020, 10:31

kedze sa tu nedaju editovat prispevky, tak pridam dalsi, trocha som ti upravil ten skript, skus ho prosim, ci funguje (ja som za milionom proxy a velmi to nemam ako overit).

Kód: Vybrať všetko

clear

#scriptpath = $MyInvocation.MyCommand.Definition
#[string]$dir = Split-Path $scriptpath 
#set-location $dir

$OldIp = ""
$filename = "./ip.txt"

if (Test-Path -path $filename) {
    $OldIp = Get-Content $filename
}
$CurrentIp = Invoke-RestMethod -Uri 'https://api.ipify.org'
if ($oldIp -ne $CurrentIp) {
    Write-Host "Your Ip has changed from $OldIp to $CurrentIp"
    Set-Content -Path $filename -Value $CurrentIp
    
    Invoke-RestMethod -Uri "http://www.pablox.net/writeip.php?ip=$CurrentIp"
    
    #send Email
    $smtpServer = "smtp.websupport.sk"
    $sender = "sender@sender.net"
    $users = "receiver@gmail.com";
    $subject = "Your IP $currentip"
    $body = "Previous IP was $oldip"
        foreach ($user in $users) {
            Write-Host "Sending email notification to $user" -ForegroundColor Green
            $smtp = New-Object Net.Mail.SmtpClient($smtpServer, 587)
            $smtp.EnableSsl = $true
            $smtp.Credentials = New-Object System.Net.NetworkCredential("mail@mail.com", "mail_pwd");
            $smtp.Send($sender, $user, $subject, $body)
        }
} else {
    Write-Host "Ip not changed $OldIp"
}
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
Dr.Martin
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1361
Dátum registrácie: 15 Jún 2011, 00:00
Vek: 29

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa Dr.Martin » 16 Sep 2020, 11:47

Prečo nepoužiješ DDNS?
0
Ľudovít Štúr opustil túto konverzáciu.
Nemám rád špenát, Tdi a moralistov.
GitHub

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6203
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa pocitujlasku » 16 Sep 2020, 12:58

lebo ma zariadenie, ktore nepodporuje ddns? alebo sa nechce nan spoliehat?
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
Dr.Martin
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1361
Dátum registrácie: 15 Jún 2011, 00:00
Vek: 29

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa Dr.Martin » 16 Sep 2020, 13:40

Veď ddns vedeli už aj staré routre, aj ten okresaný telecom to má. Spolahlivosť by mala byť dobrá ved sú to celosvetové firmy tie nemávajú výpadok.
Napadlo ma nejaké bezpečnostné riziko, ale až tak sa dotoho nevyznám zato sa pýtam.
0
Ľudovít Štúr opustil túto konverzáciu.
Nemám rád špenát, Tdi a moralistov.
GitHub

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6203
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa pocitujlasku » 16 Sep 2020, 14:02

a ked tam nema router?
aj google je celosvetova firma a obcas padne, aj fb, aj amazon... aj cdn.
Neriesim preco nechce to, ci ono, chcel to v powershell, tak to tam ma.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
Dr.Martin
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1361
Dátum registrácie: 15 Jún 2011, 00:00
Vek: 29

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa Dr.Martin » 16 Sep 2020, 15:50

Ja som sa skor pytal, lebo som nevedel neber to tak že vyrivam alebo niečo.
Router/modem musí mať ako inak by sa dostal na sieť?
0
Ľudovít Štúr opustil túto konverzáciu.
Nemám rád špenát, Tdi a moralistov.
GitHub

JohnnyElektro
Stály člen
Stály člen
Príspevky: 386
Dátum registrácie: 16 Júl 2019, 14:22

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa JohnnyElektro » 16 Sep 2020, 15:58

Taketo automatizovane zapisujuce url su najlepsi kandidati na zaliatie databazy nezmyslami najblizsim "hackerom". Dufam ze tu IP aspon updejtujes ako zaznam v databaze, a nezapisujes stale novu. V takom pripade by si utok mohol vydrzat, odstavi ti iba SQL server.
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa maskrtnik01 » 16 Sep 2020, 16:30

Celkove bez akéhokoľvek zabezpečenia, môže úplne ktokoľvek prehodiť IP adresu. Vtipálek tam dá 127.0.0.1, ale keby niekto chcel škodiť, môže tam dať všetko možné čo len existuje na internete.

Router samozrejme má, ale to nie je 100% garancia, že to má DDNS. Aj ked už veľa routerov má DDNS, prípadne by som dal DDNS klienta na raspberry (resp. čokoľvek iné čo by išlo 24/7). Prístup k DNS záznamom je tam heslovaný, takže je tam aspoň nejaké zabezpečenie.
0

Používateľov profilový obrázok
pablox
Ultimate člen
Ultimate člen
Príspevky: 1737
Dátum registrácie: 19 Júl 2006, 00:00
Bydlisko: Ruzomberok
Vek: 32
Kontaktovať používateľa:

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa pablox » 16 Sep 2020, 21:01

Chlapi ďakujem vám za pomoc.
Aby som upresnil o čo ide: na chalupe 200km odo mňa mám kamerový systém pripojený do routra a v routri mám nastavené presmerovanie, aby som sa z domu prIpojil na kamery. Provider (telekom) ale mení IP adresu niekedy 4x za deň, niekedy 1x za 4 dni. Preto tam mám pripojený starý netbook, na ktorom mi beží tento script.Ten mi zabezpečuje, že mám na maily stále aktuálnu IP. Tú ale posielam aj svokrovi a švagrovi, nechce sa mi to ale neustále kopírovať z mailu. Chcem teda zmenenú IP poslať do databázy a oni budú mať jeden odkaz u mňa na stránke, kde bude aktuálna IP a oni si len kliknú na odkaz a prihlásia sa.

Na ten netboook mám ešte pripojené lokálne Arduino cez Ethernet - to mi zabezpečuje meranie teplôt v miestnostiach, chladničke, na kotli. Navyše viem zapnúť/vypnúť kotol a kamery. Na netboook sa pripájam cez TeamViewer/AnyDesk, takže tak je to zabezpečenie v poriadku.

@pocitujlasku : ďakujem ti, ja som sa s tým včera kúsok zabával, ale stroskotal som na jednoduchej veci - na tom netbooku mám PowerShell 2.0 a ten ešte neobsahuje Invoke-RestMethod, tá je integrovaná až od verzie 3.0, takže musím spraviť update, ak sa mi to podarí.
Prílohy
Bez názvu.png
0
Meranie radiačného pozadia https://radmon.pablox.net/
Moja osobná webstránka http://www.pablox.net
Moja meteostanica http://www.teplomer.pablox.net

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2563
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa maskrtnik01 » 16 Sep 2020, 21:26

Tak to už máme okrem routra ďalšie zariadenie, ktoré beží 24/7. Pokojne môže byť na netbooku klient od ddns providera. Navyše tá doména nebude pablox.net, ale nejaká iná ktorú nikomu nepoviete - ďalší pilier ochrany.
0

Používateľov profilový obrázok
Dr.Martin
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1361
Dátum registrácie: 15 Jún 2011, 00:00
Vek: 29

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa Dr.Martin » 16 Sep 2020, 21:54

Pablox tak to mam aj ja len v dome kde byvam. Router mam od telecomu zte a v nom nastavene presmerovanie aby som sa tam zvonka pripojil. Mam tam ale nastaveny aj ten ddns server aby som si nemusel stale zistovat tu ipcku. DDNS mam od noip free verziu kazdy mesiac mi dojde mail a musim ho potvrdit. Ak by ta to otravovalo da sa to aj zaplatit.
0
Ľudovít Štúr opustil túto konverzáciu.
Nemám rád špenát, Tdi a moralistov.
GitHub

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6203
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa pocitujlasku » 16 Sep 2020, 22:19

Dr.Martin napísal:Ja som sa skor pytal, lebo som nevedel neber to tak že vyrivam alebo niečo.
Router/modem musí mať ako inak by sa dostal na sieť?
Nemusi mat router/modem, aby sa dostal na siet.
pablox napísal:Na ten netboook mám ešte pripojené lokálne Arduino cez Ethernet
A nechces tam raspberry, alebo nieco podobne? ma to podstatne nizsiu spotrebu a vies tam pripojit aj externy hdd - takze vies fungovat aj s napr. mysql databazou a rozbehat si komplet php+webserver+dalsie veci. ja tam mam napr. aj dotnetcore a teda viem si tam spustat programy vytvorene v c#
pablox napísal: na tom netbooku mám PowerShell 2.0 a ten ešte neobsahuje Invoke-RestMethod, tá je integrovaná až od verzie 3.0, takže musím spraviť update, ak sa mi to podarí.
Skus toto, len som nahradil invoke tym tvojim povodnym webclient, neskusal som, ale malo by to ist.

Kód: Vybrať všetko

clear

scriptpath = $MyInvocation.MyCommand.Definition
[string]$dir = Split-Path $scriptpath
set-location $dir

$OldIp = ""
$filename = "./ip.txt"

if (Test-Path -path $filename) {
    $OldIp = Get-Content $filename
}
$CurrentIp = (New-Object net.webclient).downloadstring("http://api.ipify.org")
if ($oldIp -ne $CurrentIp) {
    Write-Host "Your Ip has changed from $OldIp to $CurrentIp"
    Set-Content -Path $filename -Value $CurrentIp
   (New-Object net.webclient).downloadstring("http://www.pablox.net/writeip.php?ip=$CurrentIp")
   
    #send Email
    $smtpServer = "smtp.websupport.sk"
    $sender = "sender@sender.net"
    $users = "receiver@gmail.com";
    $subject = "Your IP $currentip"
    $body = "Previous IP was $oldip"
        foreach ($user in $users) {
            Write-Host "Sending email notification to $user" -ForegroundColor Green
            $smtp = New-Object Net.Mail.SmtpClient($smtpServer, 587)
            $smtp.EnableSsl = $true
            $smtp.Credentials = New-Object System.Net.NetworkCredential("mail@mail.com", "mail_pwd");
            $smtp.Send($sender, $user, $subject, $body)
        }
} else {
    Write-Host "Ip not changed $OldIp"
}
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

vaanja
Stály člen
Stály člen
Príspevky: 145
Dátum registrácie: 22 Jan 2011, 00:00
Bydlisko: TO
Vek: 49

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa vaanja » 16 Sep 2020, 22:26

aky typ kamery tam prevadzkujes? urcite nema DDNS?
alebo ine zariadenie, co tam ide 24x7 napr. nejake ulozisko kam nahravas obraz...
0

Používateľov profilový obrázok
remusator
Ultimate člen
Ultimate člen
Príspevky: 2245
Dátum registrácie: 28 Apr 2010, 00:00
Vek: 34

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa remusator » 17 Sep 2020, 09:15

Pablox, odporúčam riešenie s raspi.
Doma mám tak poriešenú VPN-ku, zavesenú na upc, provider tiež z času na čas zmení ip.

Na DDNS používam duckdns.org:
1) založíš si doménu, napr xyz.duckdns.org
2) na rpi uložíš jeden skript, ktorý cez curl volá url-ku podobne ako to máš navrhnuté ty, s tým rozdielom, že tam je bezpečnostný token (teda ak tú urlku zavolá náhodný okoloidúci bez znalosti tokenu, ip adresu ti nezaktualizuje. Ak ti token ukradnú/niekto odhali, len pregeneruješ cez web + aktualizuješ skript)
3) Tento skript hodíš do cronu, kde to beží každých napr. 5m
4) Kdekoľvek potrebujem, volám priamo xyz.duckdns.org, nemením nič v kóde, oni ma presmerujú

Pozri sa na to, používam už 2. rok. Za ten čas mali myslím 1-2x výpadok, inak bezproblémov.
Majú kopec návodov, aj mimo linuxu, napr. powershell:
https://github.com/ataylor32/duckdns-po ... uckDNS.ps1

Ak sa ti aj duck nepáči, pozri ich riešenia s powershellom / windows scriptom, možno ťa zaujme a pomôže :)
Prílohy
Pre tieto os majú priamo návod.
Pre tieto os majú priamo návod.
0

Používateľov profilový obrázok
pablox
Ultimate člen
Ultimate člen
Príspevky: 1737
Dátum registrácie: 19 Júl 2006, 00:00
Bydlisko: Ruzomberok
Vek: 32
Kontaktovať používateľa:

Re: PowerShell odoslanie IP do PHP

Príspevok od používateľa pablox » 18 Sep 2020, 09:15

pocitujlasku napísal:
Dr.Martin napísal:Ja som sa skor pytal, lebo som nevedel neber to tak že vyrivam alebo niečo.
Router/modem musí mať ako inak by sa dostal na sieť?
Nemusi mat router/modem, aby sa dostal na siet.
pablox napísal:Na ten netboook mám ešte pripojené lokálne Arduino cez Ethernet
A nechces tam raspberry, alebo nieco podobne? ma to podstatne nizsiu spotrebu a vies tam pripojit aj externy hdd - takze vies fungovat aj s napr. mysql databazou a rozbehat si komplet php+webserver+dalsie veci. ja tam mam napr. aj dotnetcore a teda viem si tam spustat programy vytvorene v c#
pablox napísal: na tom netbooku mám PowerShell 2.0 a ten ešte neobsahuje Invoke-RestMethod, tá je integrovaná až od verzie 3.0, takže musím spraviť update, ak sa mi to podarí.
Skus toto, len som nahradil invoke tym tvojim povodnym webclient, neskusal som, ale malo by to ist.

Kód: Vybrať všetko

clear

scriptpath = $MyInvocation.MyCommand.Definition
[string]$dir = Split-Path $scriptpath
set-location $dir

$OldIp = ""
$filename = "./ip.txt"

if (Test-Path -path $filename) {
    $OldIp = Get-Content $filename
}
$CurrentIp = (New-Object net.webclient).downloadstring("http://api.ipify.org")
if ($oldIp -ne $CurrentIp) {
    Write-Host "Your Ip has changed from $OldIp to $CurrentIp"
    Set-Content -Path $filename -Value $CurrentIp
   (New-Object net.webclient).downloadstring("http://www.pablox.net/writeip.php?ip=$CurrentIp")
   
    #send Email
    $smtpServer = "smtp.websupport.sk"
    $sender = "sender@sender.net"
    $users = "receiver@gmail.com";
    $subject = "Your IP $currentip"
    $body = "Previous IP was $oldip"
        foreach ($user in $users) {
            Write-Host "Sending email notification to $user" -ForegroundColor Green
            $smtp = New-Object Net.Mail.SmtpClient($smtpServer, 587)
            $smtp.EnableSsl = $true
            $smtp.Credentials = New-Object System.Net.NetworkCredential("mail@mail.com", "mail_pwd");
            $smtp.Send($sender, $user, $subject, $body)
        }
} else {
    Write-Host "Ip not changed $OldIp"
}
Ďakujem, funguje to :)

Toto moje krkolomné riešenie som pred rokom spravil, aby som mal dohľad na chalupou, keď tam nikto nie je. Nie som IT, takže som to splátal ako šlo. DVRko, ktoré tam mám je starý typ, ku ktorému som nič nenašiel, ale DDNS by malo mať, cez web to ale nenastavím. Ešte uvažujem spraviť prístup na heslo do toho Arduina a pripojím ho priamo na router. Tak môžem odpojiť netbook. Ďalší víkend tam pôjdem s wattmetrom a zmeriam príkon toho celého. Netbook ale bude žrať nič oproti tomu DVR. Nakoľko tam svokrovci prevádzkujú ešte dve chladničky (jedna stará calex) + mraziak, nejaké DVR by nemuselo byť tak kritické.

Ako ale píšem, celé som to robil za chodu, z toho čo bolo po ruke. Jediná záloha v prípade pádu systému je suseda vedľa :D
0
Meranie radiačného pozadia https://radmon.pablox.net/
Moja osobná webstránka http://www.pablox.net
Moja meteostanica http://www.teplomer.pablox.net

Napísať odpoveď