Svetelektro.com

Svetelektro.com

Meno:
Heslo:
SVETELEKTRO • PowerShell odoslanie IP do PHP

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

PowerShell odoslanie IP do PHP

Odoslaťod 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.
Náš rodinný blog http://www.ajmysmetu.com
Moja osobná webstránka http://www.pablox.net
Moja meteostanica http://www.teplomer.pablox.net
pablox
Obrázok používateľa
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1334
Vek: 29.34
Založený: 19.07.2006
Bydlisko: Ruzomberok
Paragraf: 23
Karma: 18

Re: PowerShell odoslanie IP do PHP

Odoslaťod mac26 » 15 Sep 2020, 17:23

nebolo by jednoduchsie sa priamo pripojit na DB a zapisat to rovno do nej?
mac26
Obrázok používateľa
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1151
Založený: 01.02.2010
Bydlisko: Martin
Karma: 8

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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.
budvar10
Obrázok používateľa
Stály člen
Stály člen
Príspevky: 453
Založený: 15.12.2014
Bydlisko: Košice
Karma: 7

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 5110
Vek: 37.55
Založený: 20.07.2007
Bydlisko: Poprad
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 5110
Vek: 37.55
Založený: 20.07.2007
Bydlisko: Poprad
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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"
}
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 5110
Vek: 37.55
Založený: 20.07.2007
Bydlisko: Poprad
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod Dr.Martin » 16 Sep 2020, 11:47

Prečo nepoužiješ DDNS?
Ľudovít Štúr opustil túto konverzáciu.
Nemám rád špenát, Tdi a moralistov.
Propaganda
Dr.Martin
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 916
Vek: 26.29
Založený: 15.06.2011
Bydlisko: okolie NZ
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod pocitujlasku » 16 Sep 2020, 12:58

lebo ma zariadenie, ktore nepodporuje ddns? alebo sa nechce nan spoliehat?
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 5110
Vek: 37.55
Založený: 20.07.2007
Bydlisko: Poprad
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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.
Ľudovít Štúr opustil túto konverzáciu.
Nemám rád špenát, Tdi a moralistov.
Propaganda
Dr.Martin
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 916
Vek: 26.29
Založený: 15.06.2011
Bydlisko: okolie NZ
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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.
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 5110
Vek: 37.55
Založený: 20.07.2007
Bydlisko: Poprad
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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ť?
Ľudovít Štúr opustil túto konverzáciu.
Nemám rád špenát, Tdi a moralistov.
Propaganda
Dr.Martin
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 916
Vek: 26.29
Založený: 15.06.2011
Bydlisko: okolie NZ
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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.
JohnnyElektro
Stály člen
Stály člen
Príspevky: 273
Založený: 16.07.2019
Karma: 0

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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.
maskrtnik01
Obrázok používateľa
Ultimate člen
Ultimate člen
Príspevky: 1767
Vek: 23.85
Založený: 20.07.2010
Bydlisko: okolie KE
Karma: 7

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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
Náš rodinný blog http://www.ajmysmetu.com
Moja osobná webstránka http://www.pablox.net
Moja meteostanica http://www.teplomer.pablox.net
pablox
Obrázok používateľa
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1334
Vek: 29.34
Založený: 19.07.2006
Bydlisko: Ruzomberok
Paragraf: 23
Karma: 18

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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.
maskrtnik01
Obrázok používateľa
Ultimate člen
Ultimate člen
Príspevky: 1767
Vek: 23.85
Založený: 20.07.2010
Bydlisko: okolie KE
Karma: 7

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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.
Ľudovít Štúr opustil túto konverzáciu.
Nemám rád špenát, Tdi a moralistov.
Propaganda
Dr.Martin
Obrázok používateľa
Pokročilý člen
Pokročilý člen
Príspevky: 916
Vek: 26.29
Založený: 15.06.2011
Bydlisko: okolie NZ
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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"
}
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.
pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 5110
Vek: 37.55
Založený: 20.07.2007
Bydlisko: Poprad
Karma: 19

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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...
vaanja
Obrázok používateľa
Stály člen
Stály člen
Príspevky: 123
Vek: 45.91
Založený: 22.01.2011
Bydlisko: TO
Karma: 1

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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-powershell/blob/master/Update-DuckDNS.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
ducks.png
Pre tieto os majú priamo návod.
remusator
Obrázok používateľa
Ultimate člen
Ultimate člen
Príspevky: 2189
Vek: 30.75
Založený: 28.04.2010
Karma: 1

Re: PowerShell odoslanie IP do PHP

Odoslaťod 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
Náš rodinný blog http://www.ajmysmetu.com
Moja osobná webstránka http://www.pablox.net
Moja meteostanica http://www.teplomer.pablox.net
pablox
Obrázok používateľa
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1334
Vek: 29.34
Založený: 19.07.2006
Bydlisko: Ruzomberok
Paragraf: 23
Karma: 18

Ďalšia

Naspäť na Softvér

Kto je prítomný

Užívatelia prezerajúci si toto fórum: Žiadny registrovaný používateľ a 1 hosť.

Forums ©
Autor stránky je Ondrej Závodský(zawin), o graficky design sa stará Ľuboš Fabo(BUFU).

TOPlist

Powered by Copyright © UNITED-NUKE CMS. All Rights Reserved.
Čas potrebný k spracovaniu stránky 1.45 sekúnd