Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

Uitvoer programma naar website

Anoniem
None
10 antwoorden
  • Ik heb een website waarop ik graag de output van een linux script wil laten zien. Dus op een linux host staat het programma 'test' wat bij het runnen de uitvoer 'test = 23' geeft. Deze waarde verandert van tijd tot tijd dus ik wil de actuele situatie op m'n pagina weergeven. Is het mogelijk vanuit een html/php pagina zo'n programma te starten en de uitvoer te updaten?
  • Een webpagina is een tekst-bestand bereikbaar voor de webserver. Je kunt een script, mits de permissies goed zijn, een bestand laten aanmaken of overschrijven. De webserver verstuurt simpelweg de pagina die op dat moment wordt opgevraagd.

    Je kunt natuurlijk ook het opvragen van de pagina, vergezeld laten gaan van het te draaien script. Je moet dan wel kunnen programmeren en een beetje verstand hebben van de security-implicaties. Je kunt de applicatie in php programmeren, of vanuit php een extern script laten draaien en de output teruggeven aan php of een nieuw bestand laten aanmaken.

    Kortom vele mogelijkheden.
  • Ja dus ga ik maar is een php functie zoeken die een script kan uitvoeren…
  • [code:1:d52bc2dc32]
    #!/bin/bash
    #system_page
    ##### Constants

    TITLE="nieuwe nummer voor webiste op $HOSTNAME"
    RIGHT_NOW=$(date +"%x %r %Z")
    TIME_STAMP="Updated on $RIGHT_NOW by $USER"

    ##### Functions
    function show_newnummer
    {
    echo "<h2>laatst geupdate</h2>"
    echo "<pre>"
    test.sh
    echo "</pre>"
    }

    ##### Main
    cat <<- _EOF_
    <html>
    <head>
    <title>$TITLE</title>
    </head>
    <body bgcolor ='white' text='black'>
    <h2>$TITLE</h2>
    <p>$TIME_STAMP</p><br>
    <p>$RIGHT_NOW</a><br>
    $(show_newnummer)
    </body>
    </html>
    _EOF_
    [/code:1:d52bc2dc32]

    maak dit bovenste eens executable.. en voer het uit..dan komt de hele html opmaak eruit rollen. Deze gaat er vanuit dat test.sh het progsel is wat het een nieuw nummer geeft.
  • <!-#exec cgi="/cgi-bin/test.sh"->

    geef die jongen nu gewoon een makkelijk antwoord op een makkelijke vraag :roll:
  • De lol is gewoon dat de output van elk commando getoond kan worden via een web server. Dat is nou net wat CGI is. Perl, Bash, PHP C, C++, Delphi, Kylix…… maakt allemaal geen donder uit.

    Zolang het maar op een plek staat waar de webserver het uit mag/kan voeren en de output naar de normale uitvoer gaat. En de uitvoer moet aan wat regeltjes qua format voldoen.

    Vandaar dat je ook vaak web adressen ziet als http://my.server.nl/cgi-bin/opdracht …… die cgi-bin is nix anders dan een plek waar de webserver het toestaat dat opdrachten uitgevoerd worden.

    Serverside scripten met bv ASP, PHP of zelfs MODPERL is anders. Die bestanden kunnen overal in de webspace staan. Maar in dat geval is het ook de webserver _zelf_ die het script uitvoert. Maar ook in dit geval moet de output weer aan regeltjes voldoen.

    Maar die regeltjes zijn overgens niet zo moeilijk hoor. De webserver moet alleen maar een header ontvangen zodat ie weet wat hem te wachten staat


    Voor html is dat bv

    Content-type: text/html



    De regel moet gevolgd worden door een lege regel, vandaar die 2x
    .
    Wat volgt kan gewone html zijn

    Voor een tekst bestand geloof ik

    Content-type: text/ascii





  • [quote:fac9547415="Bilbo"]Voor een tekst bestand geloof ik

    Content-type: text/ascii

    [/quote:fac9547415]text/plain zou ik doen :)
    Je kunt het scriptje ook in PHP schrijven, als je permissie op de server hebt om PHP te gebruiken.

  • Wat zijn de security implicaties van het runnen van een (bash-)script via de cgi interface van een webserver? Het zou lelijk zijn als men via de webserver een shell zou kunnen starten.

    Mijn actieve content is eigenlijk altijd in PHP geschreven en ben serieus benieuwd of het aan te raden is om op die manier dynamisch pagina's te creeeren.
  • vanuit PHP kan je ook system ("cat /etc/passwd") doen. De veiligheid moet echt komen van de permissies waarmee de webserver scripts laat draaien (en als welke user, group etc.).
  • [quote:c000f11ae7="wbsoft"]vanuit PHP kan je ook system ("cat /etc/passwd") doen. De veiligheid moet echt komen van de permissies waarmee de webserver scripts laat draaien (en als welke user, group etc.).[/quote:c000f11ae7]
    Akkoord, maar in php moet je dat wel in je script programmeren. In recente versies van php, kun je per default niet zomaar variables via de http-request overschrijven of output redirecten.

    De shell biedt al dit soort functionaliteit natuurlijk wel. Ik vroeg mij af wat de mogelijkheden zijn voor een kwaadwillend persoon om de shell te manipuleren en eventueel over te nemen als de webserver shell scripts draait.

    In PHP moet je als script-schrijver je best doen om system calls te laten gebeuren. In hoeverre moet je je best doen om een shellscript dit juist niet te laten doen?

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.