Passager des parametres entre scripts bash et php

Hello à toutes et tous.
J’ai besoin d’exécuter un script bash via un script php, avec des paramètres.

Voici mon script bash :

#!/bin/bash
rm /etc/hostapd.conf
ssid=$1
key=$2
echo 'ssid=$1' >> /etc/hostapd.conf
echo 'interface=wlan0' >> /etc/hostapd.conf
echo 'hw_mode=g' >> /etc/hostapd.conf
echo 'channel=5' >> /etc/hostapd.conf
echo '#bridge=br0' >> /etc/hostapd.conf
echo 'driver=nl80211' >> /etc/hostapd.conf
echo 'logger_syslog=0' >> /etc/hostapd.conf
echo 'logger_syslog_level=0' >> /etc/hostapd.conf
echo 'wmm_enabled=1' >> /etc/hostapd.conf
echo 'wpa=2' >> /etc/hostapd.conf
echo 'preamble=1' >> /etc/hostapd.conf
echo 'wpa_psk=66eb31d2b48d19ba216f2e50c6831ee11be98e2fa3a8075e30b866f4a5ccda27' >> /etc/hostapd.conf
echo 'wpa_passphrase=$2' >> /etc/hostapd.conf
echo 'wpa_key_mgmt=WPA-PSK' >> /etc/hostapd.conf
echo 'wpa_pairwise=TKIP' >> /etc/hostapd.conf
echo 'rsn_pairwise=CCMP' >> /etc/hostapd.conf
echo 'auth_algs=1' >> /etc/hostapd.conf
echo 'macaddr_acl=0' >> /etc/hostapd.conf
echo 'noscan=1' >> /etc/hostapd.conf
echo 'ctrl_interface=/var/run/hostapd' >> /etc/hostapd.conf
echo 'ctrl_interface_group=0' >> /etc/hostapd.conf

Et celui en php

<?php
key=12345678
ssid=OBAMA
exec('/diagbox/scripts_sh/hostapd');
?>

Vous vous doutez bien que si je pose mon code ici,c’est que ça ne fonctionne pas. Et étant débutant, je ne vois pas mon erreur qui doit être énorme :slight_smile:

Merci d’avance

Essaye ça déjà :

<?php
exec('/diagbox/scripts_sh/hostapd 12345678 OBAMA');
?>

et ensuite ça

<?php
$key=12345678
$ssid=OBAMA
exec("/diagbox/scripts_sh/hostapd $key $ssid");
?>

«$x» représente le Xème argument lors du lancement de ton script, là tu ne passais rien.
Attention au deuxième exemple j’ai changer les guillemet pour que tes variables soient bien interprétées.

PS : J’ai pas testé le code …

Hello Mimoza.
La première commande fonctionne super bien.
La deuxième non :frowning: lol

Désolé je ne fait pas de dev PHP et je n’ai pas d’environnement de test sous la main …
Si la première commande te suffit tant mieux

Ne sois pas désolé,tu m’as beaucoup aidé déjà. Merci :slight_smile:

Bonjour

Je n’ai pas l’habitude d’utiliser php

Mais peut-être comme ça :

<?php
$key = 12345678
$ssid = "OBAMA"
exec("/diagbox/scripts_sh/hostapd ".$key." ".$ssid);
?>

Merci pour ton aide :slight_smile:
apres plusieurs tests j’ai trouvé mon erreur :slight_smile:

Mimoza avait raison mais il manquait un petit truc :

<?php $key=12345678; ==> le ; $ssid="OBAMA"; ==> le ; et les guillemets exec("/diagbox/scripts_sh/hostapd $key $ssid"); ?>

tu n’etais pas tres loin :slight_smile:
merci encore pour ton aide précieuse

La meilleur façon d’apprendre c’est de chercher par soi-même :+1:
Bien joué

Merci pour le retour :slight_smile:

et bravo pour avoir trouvé la solution :+1:


Je me suis permis de modifier l’apparence des blocs de lignes des scripts dans ton premier message de fil,

et je te propose le script suivant :

#!/bin/bash

ssid=$1
key=$2

cat << TAG_EOF > /etc/hostapd.conf
ssid=$ssid
interface=wlan0
hw_mode=g
channel=5
#bridge=br0
driver=nl80211
logger_syslog=0
logger_syslog_level=0
wmm_enabled=1
wpa=2
preamble=1
wpa_psk=66eb31d2b48d19ba216f2e50c6831ee11be98e2fa3a8075e30b866f4a5ccda27
wpa_passphrase=$key
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0
noscan=1
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
TAG_EOF

Voir :

https://stackoverflow.com/questions/2953081/how-can-i-write-a-heredoc-to-a-file-in-bash-script

https://en.wikipedia.org/wiki/Here_document

Hello
Ca marche très bien ton code. :slight_smile:
Je vais étudier les liens que tu m’as mis.
Merci beaucoup