2017-01-15 3 views
0

私はUBNT Toughswitchを持っていて、携帯電話でPHPとスクリプトを使って遠隔操作できます。私はUBNT mFiと同様のスクリプトでこれを行います。私はサーバーにSSH(rootで、私はこれまでにセットアップしたユーザーのみ)のスクリプトを実行し、その場所でスクリプトを実行します。スクリプトとPHPコードのすべてのR/W/EボックスをチェックしましたPHPのアクセス権の問題。そこでここではスクリプトです:HTTP GETリクエストでスクリプトを呼び出すためPHPがExpect Scriptを呼び出す(SSH経由でスクリプトを実行していますが、PHPで起動しています)

PHP:それは保存&までのすべてを介して取得します

#!/usr/bin/expect 
    set timeout 30 

    spawn ssh [email protected]$ip 
     expect { 
      "*assword:*" { 
       send "$password\r" 
       expect { 
        "*assword:*" { 
          close 
          continue 
          } 
        "*#*" { 
         send "grep -v 'switch.port.3.poe=48' /var/tmp/system.cfg > /var/tmp/tmpsystem.cfg; mv /var/tmp/tmpsystem.cfg /var/tmp/system.cfg\r" 
         expect { 
          "*not found*" { 
            close 
            } 
          "*#*" { 
           send "save && reboot\r" 
           interact 
           } 
          } 
         } 
        } 
       } 
      } 

:ここ

<?php 

    system ("./tsport3-24-off.sh"); 

    ?> 

    <script type="text/javascript"> 

    window.close(); 

    </script> 

スクリプト期待です&再起動の部分であり、php経由で起動された場合は実行されません。 SSHを通して、うまく動作します。私はまた、2つの異なるコマンドで保存しようとしましたが、& &が好きではなかった場合に備えて、別のスクリプトでその場所を確認してください。それは許可の問題のような何らかの理由で、& &再起動を送信することをPHPが拒否したようですが、別のデバイスのトラフsshに送信しているので意味がありません。これは、ポート3のpoe 24vをオフにすることです。私は(24/48)のために他のものを持っていて、再起動しても、PHPなしでは動作しますが、PHPでは動作しません。

答えて

0

100%回答ではありませんが、機能します。

私はそうのような& &リブート保存し、別のを追加した場合:

expect "*#*" 
    send "save && reboot/r" 
    expect "*#*" 
    send "save && reboot/r" 

をPHPスクリプトで実行したときにそれは、エラー出力はありません、私は通常それを実行した場合、おそらくありませんが、それはとにかく私の意図はなかったです。それはタイミングの問題だと思うか、PHPによって実行されているときに余分なものを取り戻しています

関連する問題