Question Erreur d'autorisation de refus


J'ai écrit un script bash et il est exécuté en arrière-plan. Dans ce script, j'utilise la commande suivante:

sshpass -p prakash123 ssh -t -p $1 prakash@localhost './update_script.sh > /update.out 2> /update.err < /dev/null | echo $! > /update.pid &'

Ça marche très bien. Mais je veux changer l'emplacement de /update.out ,/update.err et /update.pid  Donc commande modifiée pour cela:

sshpass -p prakash123 ssh -t -p $1 prakash@localhost './update_script.sh > /pra/log/update.out 2> /pra/log/update.err < /dev/null | echo $! > /pra/log/update.pid &'

Maintenant, je reçois la permission erreur refusée.

Parce que j'ai changé le chemin des fichiers de sortie. Je ne suis pas sûr mais je pense que je dois donner la permission de super utilisateur comme su ou sudo avant le sshpass

Alors, comment puis-je changer le chemin de /update.out , /update.err et /update.pid ce fichier de la commande ci-dessus.?


0
2018-04-08 06:10


origine




Réponses:


Dans la première commande, vous écrivez la sortie vers un emplacement auquel vous avez accès en écriture, donc tout va bien.

Maintenant le /pra répertoire n'existe pas par défaut, donc je suppose que vous l'avez créé en utilisant un accès root. Donc, pour y écrire, vous devez également utiliser l’accès root. Ajoutez simplement sudo à la commande comme,

sudo sshpass -p prakash123 ssh -t -p $1 prakash@localhost './update_script.sh > /pra/log/update.out 2> /pra/log/update.err < /dev/null | echo $! > /pra/log/update.pid &'

Mais plutôt que de le faire, je vous suggère d’écrire dans un répertoire de $HOME dir et donnez-le rwx------ permission (c.-à-d. lire / écrire / exécuter pour vous et pas d’autorisations pour les autres). sudo.


1
2018-04-08 08:49



/ pra / log / directory existe par défaut. Je pense que sudo est la meilleure option pour moi parce que je ne peux pas changer la permission de répertoire / pra / log parce que d'autres utilisateurs ont également accès à ce répertoire. J'ai essayé votre commande mais le fichier ./update_script.sh n'est pas exécuté. Dans votre commande ci-dessus, ce qui est "entershpass" signifie que vous êtes un superutilisateur ou quoi que ce soit d'autre. - Prakash V Holkar
@prakash il y a quelques invités indésirables dans la commande. Ajoutez simplement sudo avant votre commande. Je vais modifier la réponse plus tard lors de l'utilisation de mon ordinateur. - Registered User
Bien sûr, j'ai ajouté sudo avant ma commande mais cela ne fonctionne pas pour moi. Je ne reçois pas les fichiers /update.out, /update.err et /update.pid dans le répertoire / pra / log. - Prakash V Holkar
@PrakashVHolkar affiche l'erreur. - Registered User
Je reçois l'erreur suivante: La vérification de la clé de l'hôte a échoué. - Prakash V Holkar