Bash/Shell: Exécuter un programme
Fermé
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
-
7 mai 2013 à 16:36
nonodu003 Messages postés 59 Date d'inscription jeudi 11 avril 2013 Statut Membre Dernière intervention 13 mai 2013 - 13 mai 2013 à 14:12
nonodu003 Messages postés 59 Date d'inscription jeudi 11 avril 2013 Statut Membre Dernière intervention 13 mai 2013 - 13 mai 2013 à 14:12
A voir également:
- Bash/Shell: Exécuter un programme
- Classic shell windows 11 - Télécharger - Personnalisation
- Retour à la ligne bash ✓ - Forum Shell
- Bash permission non accordée - Forum Shell
- Bingo bash free - Télécharger - Divers Jeux
- Bash écrire dans un fichier - Forum Shell
8 réponses
gardiendelanuit
Messages postés
1770
Date d'inscription
jeudi 20 décembre 2007
Statut
Membre
Dernière intervention
19 novembre 2016
264
7 mai 2013 à 17:12
7 mai 2013 à 17:12
Bonjour,
Il faudrait regarder les logs si c'est un dédié (serveur)
De grandes chance que celà vienne des problème de droits.
Hébergement mutualisé = pas de lancement d'application la plupart du temps.
Il faudrait regarder les logs si c'est un dédié (serveur)
De grandes chance que celà vienne des problème de droits.
Hébergement mutualisé = pas de lancement d'application la plupart du temps.
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
10 mai 2013 à 10:11
10 mai 2013 à 10:11
C'est quoi les logs? Si sa vient des droits comment je fais pour les regarder et comment je les modifier? ^^
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
10 mai 2013 à 11:04
10 mai 2013 à 11:04
hello
esayer de remplacer ./ par le chemin complet et capturer les messages:
esayer de remplacer ./ par le chemin complet et capturer les messages:
system("/chemin/exec.sh >/tmp/log 2>&1");
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
10 mai 2013 à 11:20
10 mai 2013 à 11:20
J'ai fait ceci:
Mais mon $return_valeur est vide. Je n'ai plus le message d'erreur mais c'est pas pour cela que le programme c++ s'est exécuté.
Si j'ai bien compris ta commande, un dossier tmp devrais se crée avec un fichier log à l'intérieur? Si oui, je l'ai pas trouvé. J'ai essayé de créer le dossier tmp dans le même dossier que exec.sh et idem log ne s'est pas crée.
$return_valeur = system("/Users/nom/programme/exec.sh >/tmp/log 2>&1"); echo "$return_valeur *** <br/>";
Mais mon $return_valeur est vide. Je n'ai plus le message d'erreur mais c'est pas pour cela que le programme c++ s'est exécuté.
Si j'ai bien compris ta commande, un dossier tmp devrais se crée avec un fichier log à l'intérieur? Si oui, je l'ai pas trouvé. J'ai essayé de créer le dossier tmp dans le même dossier que exec.sh et idem log ne s'est pas crée.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
10 mai 2013 à 12:19
10 mai 2013 à 12:19
c'est un système Unix ? /tmp doit exister
/Users/nom/programme/exec.sh a bien les droits d'être exécuté par l'utilisateur de la tâche php?
/Users/nom/programme/exec.sh a bien les droits d'être exécuté par l'utilisateur de la tâche php?
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
10 mai 2013 à 14:08
10 mai 2013 à 14:08
Je travaille sur un MAC OS (ce n'est pas mon ordi et c'est la première fois que je travaille sur un mac ^^).
exec.sh a les droits pour être exécuté en fesant un ls -l sur le terminal je trouve ceci:
-rwxrwxrwx
Par contre, je sais pas s'il a les droits pour php. Comment je peux le savoir?
exec.sh a les droits pour être exécuté en fesant un ls -l sur le terminal je trouve ceci:
-rwxrwxrwx
Par contre, je sais pas s'il a les droits pour php. Comment je peux le savoir?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
10 mai 2013 à 14:33
10 mai 2013 à 14:33
ps -ef montre toutes les tâches et l'utilisateur (colonne UID). exec.sh a bien tout les droits mais il faut vérifier tout le chemin, par ex. nom peut protégé
ls -ld /Users ;ls -ld /Users/nom ; ls -ld /Users/nom/programme/
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
Modifié par nonodu003 le 10/05/2013 à 15:08
Modifié par nonodu003 le 10/05/2013 à 15:08
J'ai fait la vérification avec les ls -ld j'obtiens ceci:
/Users => drwxr-xr-x
/Users/nom => drwxr-xr-x+
/Users/nom/Programme/ => drwxr-xr-x
/Users/nom/programme/exec.sh => -rwxrwxrwx
Du coup, j'ai été curieuse de voir les droits pour l'interface de l'autre programme que j'ai déjà réaliser et qu'il fonctionne correctement (qui exécute une autre exec.sh). Et j'obtiens les résultats suivant pour l'interface qui fonctionne:
/Users => drwxr-xr-x
/Users/nom => drwxr-xr-x+
/Users/nom/Programme2/ => drwxr-xr-x
/Users/nom/Programme2/exec2.sh => -rwxr-xr-x
Les droits sont différents, mais bon je crois que c'est différent pour les droits d'écriture, donc ce n'est pas sa qui pause un problème.
/Users => drwxr-xr-x
/Users/nom => drwxr-xr-x+
/Users/nom/Programme/ => drwxr-xr-x
/Users/nom/programme/exec.sh => -rwxrwxrwx
Du coup, j'ai été curieuse de voir les droits pour l'interface de l'autre programme que j'ai déjà réaliser et qu'il fonctionne correctement (qui exécute une autre exec.sh). Et j'obtiens les résultats suivant pour l'interface qui fonctionne:
/Users => drwxr-xr-x
/Users/nom => drwxr-xr-x+
/Users/nom/Programme2/ => drwxr-xr-x
/Users/nom/Programme2/exec2.sh => -rwxr-xr-x
Les droits sont différents, mais bon je crois que c'est différent pour les droits d'écriture, donc ce n'est pas sa qui pause un problème.
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
10 mai 2013 à 15:03
10 mai 2013 à 15:03
Je viens de penser à un truc. La différence entre cette interface et l'autre, c'est que l'autre (celui qui fonctionne) utilise des fichiers et crées les fichiers dans le même dossier que exec.sh.
Alors que dans ce cas, le fichier exec.sh que j'exécute est dans ce dossier: /Users/nom/programme/
Exec.sh exécute un premier programme c++ grâce à des fichiers uploadés dans le dossier:
/Volumes/Data/RawData
Le c++ me crée mes deux fichiers .cvs dans le dossier:
/Volumes/Data/Output
Du coup, je viens de penser à vérifier aussi les droits pour ces dossiers avec un ls -ld et j'obtiens ceci:
/Volumes/ => drwxrwxrwt@
/Volumes/Data/ => drwx---r-x+
/Volumes/Data/RawData/ => drwxr-xr-x
/Volumes/Data/output => drwxr-xr-x
Alors que dans ce cas, le fichier exec.sh que j'exécute est dans ce dossier: /Users/nom/programme/
Exec.sh exécute un premier programme c++ grâce à des fichiers uploadés dans le dossier:
/Volumes/Data/RawData
Le c++ me crée mes deux fichiers .cvs dans le dossier:
/Volumes/Data/Output
Du coup, je viens de penser à vérifier aussi les droits pour ces dossiers avec un ls -ld et j'obtiens ceci:
/Volumes/ => drwxrwxrwt@
/Volumes/Data/ => drwx---r-x+
/Volumes/Data/RawData/ => drwxr-xr-x
/Volumes/Data/output => drwxr-xr-x
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
10 mai 2013 à 15:39
10 mai 2013 à 15:39
seul le popriétaire a le droit d'écrire dans /Volumes/Data/output
donc la tâche qui exécute exec.sh doit être le même UID que montré par un ls -l /Volumes/Data/output
donc la tâche qui exécute exec.sh doit être le même UID que montré par un ls -l /Volumes/Data/output
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
10 mai 2013 à 15:55
10 mai 2013 à 15:55
ok du coup, je dois modifier les droits pour /Volumes/Data/Output ??
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
10 mai 2013 à 16:14
10 mai 2013 à 16:14
oui si les UID sont différents
ou donner le droit w au groupe, changer le GID et mettre les 2 UID dans le même groupe
ou mettre le dossier en rwxrwxrwx (777) juste le temps d'essayer
ou donner le droit w au groupe, changer le GID et mettre les 2 UID dans le même groupe
ou mettre le dossier en rwxrwxrwx (777) juste le temps d'essayer
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
10 mai 2013 à 16:46
10 mai 2013 à 16:46
Ok. Mais je les ai comment uid et gid?
Je sais que uid est pour l'utilisateur, gid est pour le groupe. Mais franchement, je vois pas ou s'est et comment on les modifie?
Je sais que uid est pour l'utilisateur, gid est pour le groupe. Mais franchement, je vois pas ou s'est et comment on les modifie?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
11 mai 2013 à 08:34
11 mai 2013 à 08:34
UID et GID des fichiers avec ls -l
pour modifier les droits et/ou propriétaire : voir chmod chown chgrp
pour modifier les droits et/ou propriétaire : voir chmod chown chgrp
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
Modifié par nonodu003 le 13/05/2013 à 11:13
Modifié par nonodu003 le 13/05/2013 à 11:13
Ok. Merci beaucoup ! Je me suis rendu compte que le dossier /Volumes/ n'avait pas le même UID et GID.
J'ai ceci:
Mais moi je veux ceci:
Du coup, j'ai essayé de modifié le propriétaire mais je n'y arrive pas. J'ai essayé de modifier les propriétaires avec la commande CHOWN comme ceci:
Mais cela ne fonctionne pas ! Pourquoi ?! --"
J'ai ceci:
drwxrwxrwt@ 7 root admin 238 May 6 10:16 /Volumes/
Mais moi je veux ceci:
drwxrwxrwt@ 7 nom staff 238 May 6 10:16 /Volumes/
Du coup, j'ai essayé de modifié le propriétaire mais je n'y arrive pas. J'ai essayé de modifier les propriétaires avec la commande CHOWN comme ceci:
chown root:nom /Volumes/
Mais cela ne fonctionne pas ! Pourquoi ?! --"
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
13 mai 2013 à 11:16
13 mai 2013 à 11:16
J'ai aussi essayé de cette façon:
Mais ça me met ceci:
chown nom /Volumes/
Mais ça me met ceci:
chown: /Volumes/: Operation not permitted
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
Modifié par dubcek le 13/05/2013 à 11:25
Modifié par dubcek le 13/05/2013 à 11:25
il faut les droits root pour changer des droits, donc sudo chown ....
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
13 mai 2013 à 11:31
13 mai 2013 à 11:31
sudo chown ?? Qu'est ce que c'est ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
13 mai 2013 à 13:20
13 mai 2013 à 13:20
sudo donne les droits root donc les privilèges à la commande qui suit
pour éviter l'erreur chown: /Volumes/: Operation not permitted
pour éviter l'erreur chown: /Volumes/: Operation not permitted
nonodu003
Messages postés
59
Date d'inscription
jeudi 11 avril 2013
Statut
Membre
Dernière intervention
13 mai 2013
1
13 mai 2013 à 14:12
13 mai 2013 à 14:12
ok merci je vais essayer