2017-04-18 39 views
1

PHPでスクリプトbashを実行したいと思います。私のスクリプトは私のサーバーにログインし、自分のアカウントを作成しています。sshをPHPで使用するbashスクリプトの実行方法

SCRIPT="useradd martinouh --home /home/martinouh --create-home; echo martinouh:$pass | chpasswd; usermod -s /bin/bash martinouh; usermod -aG sudo martinouh; usermod -aG docker martinouh;" 

sshpass -p $pass ssh -o StrictHostKeyChecking=no [email protected]$ip "${SCRIPT}" 

sshpass -p $pass ssh-copy-id -i /home/Martinouh/.ssh/id_rsa.pub [email protected]$ip 

しかし、私はshell_exec();を経由して、それを実行したときには、スクリプトではなくsshpassとの一部を実行して行います。

実行するにはどうすればよいですか?

現時点では、shell_exec();をテストするだけです。

Failed to change pseudo terminal's permission: Permission denied 
Failed to change pseudo terminal's permission: Permission denied 
Failed to change pseudo terminal's permission: Permission denied 
Failed to change pseudo terminal's permission: Permission denied 

は、多分それは、SELinuxとapacheの権限で行う必要があります:私はerror_logの中でこれを取得しています以下の

<?php 
    $output = shell_exec('bash select.sh'); 
    echo $output; 
?> 

が含まれているローカルホスト/ script.php呼び出すことによって、私のスクリプトを実行しています?

+0

手動でbashスクリプトを実行すると期待通りに機能しますか? –

+0

はい、手動で実行すると期待どおりに実行されます。 – Martinouh

+0

phpでどのように実行しているかについて詳しく説明できますか? –

答えて

0

[OK]を、今私が無効にSELinuxをしたので、それは...ユーザーを追加しログ一部を実行してい

しかし、それは私がこれを取得してい

sshpass -p $pass ssh-copy-id -i /home/Martinouh/.ssh/id_rsa.pub [email protected]$ip 

を行うことはありません

:私のWebページ上
/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/home/Martinouh/.ssh/id_rsa.pub': Permission denied 

は、だから、私は私のWebページ上でこれをし得るもの、キーとそれに chown -R apache:apacheを移動しようとしました
/usr/bin/ssh-copy-id: ERROR: failed to open ID file './id_rsa': No such file or directory (to install the contents of 'id_rsa.pub' anyway, look at the -f option) 

は私が-fと試みたが、それは

/usr/bin/ssh-copy-id: ERROR: failed to open ID file '/.pub': No such file or directory 

編集変更されません:それは今無効にSELinuxで働いているとssh-コピー-IDを修正するために

を、私は持っていましたid_rsa.pubとid_rsaをディレクトリにコピーし、両方ともchown -R apache:apacheをコピーします。そうでなければ私のid_rsa.pubを(-fフラグを付けて)サーバにコピーすることはできませんでした。

今、私はこれを修正する必要がありますどのように我々はそれが動作します知っている(それが適切な方法でなくてもカントー?)

  • のapacheに/の〜/ .sshにアクセスする権利を与えますか? (ssh-copy-id用)

  • スクリプト/シェルを実行する権限をApacheに与えますか? (SELinux)

0

エラーメッセージは擬似端末を参照するため、-Tを使用してこれを無効にしてください。擬似端末機能を必要とするほとんどの機能は対話的であり、とにかくこのような状況では適用できない。

関連する問題