• Inloggen
  • Registreer
  • Zoeken
Dit topic
  • Overal
  • Dit topic
  • Dit forum
  • Artikelen
  • Pagina's
  • Forum
  • Downloads
  • Meer opties

ICTscripters

Dé plek voor IT

Dé plek voor IT

Aanmelden

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
    3. Onopgeloste topics
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • [Beta] Ottomaan: gratis browserspel met een echte, levende stad. Feedback gezocht!

    frio 27 oktober 2026 om 12:22
  • Port Father: beta van een browsergame in Antwerpen 1931, feedback welkom

    Jeroen.G 26 oktober 2026 om 10:33
  • Maffia Hotel: een browsergame waarin je van lobbygast naar spil van het hotel groeit

    eeyk 22 oktober 2026 om 18:43
  • Crime Club volledig herschreven vanaf nul

    frio 19 oktober 2026 om 23:57
  • Malavita (nieuwe maffia game, van 0)

    jos 19 oktober 2026 om 23:18
  • Herkent deze Notion-structuurscan echte problemen?

    Jeroen.G 19 oktober 2026 om 15:09
  • 🚀 WE ZOEKEN TESTERS! 🚀

    Servertjee 3 oktober 2026 om 10:56
  • Luchtvaartsoftware: Hoe technologie de moderne luchtvaart verandert

    saggy2829 30 september 2026 om 19:31

Marktplaats

  • [Verkoop] G4G (Gangsters 4 Gangsters): volledige broncode, nieuw gebouwd in PHP 8.3 | € 30 per domein

    frio 27 oktober 2026 om 18:54
  • [TE KOOP] Malavita.be [Maffiaspel, gebaseerd op omicidio.nl, unieke code]

    Dpm_x 26 oktober 2026 om 00:22
  • TK: Kraai.eu

    frio 25 oktober 2026 om 11:39

PHP Ping

  • K.Rens
  • 15 november 2015 om 15:08
  • K.Rens
    Eigenaar
    Berichten
    4.479
    Filebase Entries
    2
    • 15 november 2015 om 15:08
    • #1

    Hallo,

    Dit keer zit ik eens vast.
    Ik twijfel of jullie een oplossing weten, maar wie niet waagt, niet wint.

    Doel:
    Ik wil vanaf mijn NAS kunnen pingen naar toestellen in mijn huis, liefst via PHP.

    Probleem:
    Mijn NAS draait een PHP versie vast van Synology. Ik kan er dus geen PEAR ping op zetten en ik kan geen exec uitvoeren.

    Ik kan wel pingen naar een poort met onderstaande code:

    PHP
    <?php
    if (!$socket = @fsockopen("192.168.1.63",12345, $errno, $errstr, 10))
    {
      echo "Offline!";
      }
      else
      {
        echo "Online!";
    fclose($socket);
    }
    ?>
    Meer tonen

    Maar het probleem is wel dat mijn toestellen standaard geen open poorten hebben.
    Ik zou overal bv een webserver op moeten installeren die luistert op poort 12345.

    Weten jullie een eenvoudige manier om toch te kunnen pingen naar lokale toestellen?

    Bedankt!

  • Gast, wil je besparen op je domeinnamen? (ad)
  • K.Rens
    Eigenaar
    Berichten
    4.479
    Filebase Entries
    2
    • 15 november 2015 om 15:43
    • #2

    Ok, ondertussen heb ik exec kunnen aanzetten op mijn Synology NAS.

    vi /etc/php/php.ini
    En voeg daar onder [PHP] volgende regel toe:
    safe_mode_exec_dir =

    /usr/syno/sbin/synoservicectl --restart php-fpm
    /usr/syno/sbin/synoservicectl --restart httpd-user

    Maar goed, dit doe ik liever niet, want dan kan men via exec als er ooit een bug is meteen alles uitvoeren op de server.
    Iemand een beter idee?

  • FangorN
    Professional
    Artikelen
    2
    Berichten
    737
    • 15 november 2015 om 15:44
    • #3

    Volgens mij kun je geen poorten pingen, "ping" werkt niet met poorten.

    Zoals je zelf al aangeeft, je huidige toestand (NAS zonder ping/exec, toestellen zonder open poorten) biedt geen oplossing.

    Je zult deze vicieuze cirkel dus moeten doorbreken door 1 van de 2 zaken aan te passen, door ofwel ping/exec mogelijk te maken op je NAS ofwel poorten open zetten / software te installeren op je apparaten.

    Ofwel dat, of we zien nog een oplossing over het hoofd. Ik zou in eerste instantie iets met je NAS proberen te doen, omdat je dan maar op 1 plek iets aan hoeft te passen en je niet speciaal hiervoor poorten open hoeft te zetten / extra applicaties hoeft te installeren.

    Vraag is wel: wat voor taken vervullen die apparaten dan precies? Waarom is het belangrijk dat je weet dat deze nog actief zijn en waarom zou het aannemelijk kunnen zijn dat deze uitvallen?

    Oeh ik weet het, hang overal webcams op die de monitors van de apparaten observeert :p.

  • K.Rens
    Eigenaar
    Berichten
    4.479
    Filebase Entries
    2
    • 15 november 2015 om 16:03
    • #4

    Het doel is om mijn Pulse-Station.com domotica automatisch en zelf te laten weten wanneer wie thuis is.
    Als gsm vriendin online is: is ze thuis.
    Idem voor mijn gsm.

    Ik zit echter nog wel ergens vast, nu denk ik dat exec toegestaan is, maar zelfs dan nog is de output raar.

    Code:
    $output = array();
    $test=exec('ping -w 1 192.168.1.1', $output);
    print_r($output);
    echo "\n";
    foreach( $output as $line ) {
    print $line . PHP_EOL ; }

    Output
    Array( [0] => PING 192.168.1.1 (192.168.1.1): 56 data bytes)

    Verwachtte output:
    Array( [0] =>PING 192.168.1.1 (192.168.1.1): 56 data bytes
    64 bytes from 192.168.1.1: seq=0 ttl=64 time=0.737 ms

    Waarom neemt hij die 2de regel met het antwoord niet mee in de $output variabele?
    Het is vast iets simpel dat ik over het hoofd zie?

  • FangorN
    Professional
    Artikelen
    2
    Berichten
    737
    • 15 november 2015 om 17:19
    • #5

    Als je de timeout instelt op 1 milliseconde (-w 1) gooit ie pakketjes die er langer over doen weg? En mogelijk is de output met deze flag anders?

  • GiovanniK
    Gevorderd
    Berichten
    252
    • 16 november 2015 om 15:31
    • #6

    Probeer het eens met shell_exec() ipv exec()?

    Ik dacht dat exec() alleen 1 regel returned en dat shell_exec() wel gewoon alle output doorgeeft.

  • K.Rens
    Eigenaar
    Berichten
    4.479
    Filebase Entries
    2
    • 19 november 2015 om 23:26
    • #7

    Als ik shell_exec doe krijg ik volgende output:
    Array()
    Dat is minder dan me gewone exec.

    Zonder de -w 1 krijg ik:
    Array( [0] => PING 192.168.1.1 (192.168.1.1): 56 data bytes)
    Zelfde dus :(

  • Tredgy
    Developer
    Berichten
    192
    • 20 november 2015 om 13:04
    • #8
    PHP
    function ping($ip) {
        $pingresult = exec("/bin/ping -c2 -w2 $ip", $outcome, $status);  
        if ($status==0) {
        $status = "Online";
        } else {
        $status = "Offline";
        }
        $message .= 'IP: '.$ip.', is  '.$status.'';    
        return $message;
    }
    
    
    ping("127.0.0.1");
    Meer tonen

    shell_exec geeft een full output maar is wel dangerous, maar zoals ik begrijp wil je alleen een bevestiging of die persoon 'thuis' is. Dan lijkt me dat dit voldoende is?

    Heb hier ook absoluut geen verstand van, maar je kan het proberen.


    PHP
    /bin/ping -c2 -w2 $ip

    Met vriendelijke groeten,
    Tredgy

    Bewerkt één keer, laatst door Tredgy (20 november 2015 om 13:11).

  • K.Rens
    Eigenaar
    Berichten
    4.479
    Filebase Entries
    2
    • 20 november 2015 om 22:59
    • #9

    Bedankt, maar de output met jou code is gewoon een witte pagina.

  • xxx
    Professional
    Berichten
    902
    • 20 november 2015 om 23:08
    • #10
    Citaat van K.Rens

    Bedankt, maar de output met jou code is gewoon een witte pagina.

    Return != echo

    Uniek mens.

  • FangorN
    Professional
    Artikelen
    2
    Berichten
    737
    • 21 november 2015 om 16:48
    • #11

    Een aantal zaken die mij nog te binnen schieten:

    - mogelijk moet je een limiet aan ping requests geven zoals Tredgy doet, anders wordt "output" misschien opgespaard totdat het proces wordt onderbroken (wat nooit gebeurt)

    - er lijkt een verschil te zijn tussen -w (lowercase) en -W (uppercase); -w is de deadline (in seconden) wanneer ping gestaakt wordt (ik weet ook niet of er in dat geval uberhaupt iets geretourneerd wordt?); -W is de timeout (in seconden) voor elk request/pakketje waarbinnen gewacht wordt op respons

    - mogelijk staat in jouw distributie ping op een compleet andere plaats; stel via het commando which ping vast waar het ping-commando zich bevindt en zorg dat je daar in je shell script naar verwijst

    Een minimale variant zou dus zoiets kunnen zijn:

    /pad/naar/ping -c 3 192.168.1.1

    - en tot slot moeten de apparaten elkaar kunnen bereiken, als er op een of andere manier een "muur" tussenzit kunnen deze sowieso niet met elkaar communiceren

  • K.Rens
    Eigenaar
    Berichten
    4.479
    Filebase Entries
    2
    • 22 november 2015 om 23:20
    • #12

    Hallo,

    xxx: bedankt, maar had de return al aangepast naar echo.
    Maar had inderdaad gekunt ;)

    @FagorN
    ik ben zeker dat ping werkt, in ssh werkt het wel.
    Verder ping ik mezelf voorlopig, dus dat moet altijd werken.
    Het werkt in ssh ook.

    Ik denk dat die exec toch niet volledig door gaat tot het systeem of dat daar nog een andere beveiliging staat.

    Ik overweeg nu een volledig andere approach:
    Een shell scriptje dat pingt en de output elke x minuten naar een txt bestand schrijft.
    Php leest dan gewoon de inhoud van het bestand uit.
    Niet super netjes, maar bespaart me veel hoofdzorgen...

  • FangorN
    Professional
    Artikelen
    2
    Berichten
    737
    • 23 november 2015 om 14:08
    • #13
    Citaat van K.Rens

    ik ben zeker dat ping werkt, in ssh werkt het wel.

    Mja maar in een shellscript (of cron, om maar een dwarsstraat te noemen) zijn de paden naar dit soort commando's vaak niet bekend, daarom doe je er volgens mij verstandiger aan om het /pad/naar/het/commando toe te voegen. Probeer dit eens i.c.m. shell_exec(), de opmerking van @GiovanniK klinkt mij wel bekend in de oren.

    Mijn nickname bevat trouwens twee keer de letter n.

  • stijnhau
    Leerling
    Berichten
    174
    • 23 november 2015 om 22:06
    • #14
    Code
    /**
         * Ping function in PHP
         *
         * @author  Stijn
         *
         * @param $host
         * @return bool
         */
        public static function ping($host)
        {
            $outcome = array();
            $status = array();
            exec("/bin/ping -c2 -w2 " . $host . " 2>&1", $outcome, $status);
            if ($status == 0) {
                return true;
            }
            return false;
        }
    Meer tonen

    Klein stukje code die werkt gebruik die zelf ook

    Check mijn projecten op stijnhau.be

  • K.Rens
    Eigenaar
    Berichten
    4.479
    Filebase Entries
    2
    • 28 november 2015 om 22:37
    • #15

    @stijnhau
    Bedankt, heb volgende geprobeerd, maar de output is altijd "2".

    PHP
    function ping($host)
      {
       $outcome = array();
        $status = array();
         exec("/bin/ping -c2 -w2 " . $host . " 2>&1", $outcome, $status);
          if ($status == 0) {
    echo "1";
           return true;
            }
    echo "2";
             return false;
              }
    
    
    ping("127.0.0.1");
    Meer tonen
  • Luc
    Software Engineer
    Berichten
    1.989
    • 29 november 2015 om 01:22
    • #16

    Je moet een count om je status zetten in je if. Want nu vergelijk je een array of die 0 is

    Website: https://devimo.nl
    Skype: https://join.skype.com/invite/dJyYILTt7Eqh

  • Tredgy
    Developer
    Berichten
    192
    • 30 november 2015 om 15:14
    • #17

    Volgens http://php.net/manual/en/function.exec.php moet $output een array zijn. en $status is gewoon plain int ..

    Met vriendelijke groeten,
    Tredgy

Registratie

Nog geen account? Registreer je nu en word deel van onze community!

Nu registreren Aanmelden

ICT Nieuws

  • PHP waarschuwt voor twee ernstige bugs die makkelijk uit te buiten lijken

    Aaron 22 oktober 2026 om 22:19

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacyverklaring
  10. Contact
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design