Wat u probeert te doen is niet mogelijk op die manier.
Merk op dat er altijd twee kanten aan zitten: De client kant en de server kant. Staat het script op de client computer of op de server?
Als het op de client staat: Jij als bezoeker ziet alleen een HTML-website. onClick
zal alleen JavaScript (of andere scripttalen ) kunnen starten, maar niet een willekeurig shellscript dat zich op uw computer bevindt. HTML-scripts draaien alleen in de browser en kunnen slechts beperkte dingen doen. Het belangrijkste is dat ze geen interactie met je computer kunnen hebben.
Denk er eens over na: Hoe zou de browser weten hoe hij het bestand moet openen? Denk je niet dat dit ook een veiligheidsprobleem zou zijn - een gewone website die scripts uitvoert op de computer van een klant? Wat als er iets was als onClick('rm -rf /home/user')
?
Een alternatief zou zijn om een Java applet te draaien, als je wilt dat er code wordt uitgevoerd op de client, maar dit is niet precies hetzelfde en het is iets heel ingewikkelds. Ik denk niet dat het nodig is om dit in detail uit te leggen.
Als het script op de server staat: Als je een script op de server wilt uitvoeren en de gebruiker de uitvoering wilt laten starten, dan moet je een server-kant programmeertaal gebruiken. Gewoon HTML is niet voldoende, omdat het min of meer een statisch bestand is. Als je interactie met de server wilt, zou je bijvoorbeeld PHP kunnen gebruiken.
Het heeft de exec
functie om een command line script uit te voeren dat op de web server is opgeslagen. Dus in principe zou je exec('/path/to/name.sh');
kunnen schrijven en het zou het script op de server uitvoeren.
Echter, alleen dit in onClick
stoppen is niet genoeg hier. Als je nog niets weet over PHP en server side web programming, kun je misschien beter eerst een paar tutorials lezen en dan terugkomen met een meer specifieke vraag.
Als je een php bestand hebt met het juiste exec(...)
commando, zorg er dan voor dat het script execute permissies heeft, niet alleen voor de gebruiker maar ook voor de groep waar de webserver in zit, dus in het eenvoudigste geval gewoon 777
.
Controleer in geval van problemen de retourwaarde van het script met echo exec(...);
om te zien of er fouten zijn.
Je kunt het script ook vanaf de commandoregel uitvoeren en niet vanuit de browser met php /path/to/file.php
.