2016-02-01 74 views
2

我正在開發一個PHP應用程序,通過它可以通過phpseclib的SSH2連接到RaspberryPI(運行Linux)。 連接到設備並通過「ls」獲取信息 - oder「pwd」 - 命令工作正常。phpseclib-SSH2 - >使用exec命令創建環境變量

但現在我正試圖在設備上創建一個新的環境變量 - 比方說TEST_VAR - 但這似乎不起作用。

按照我的PHP代碼來嘗試:

$ssh = new Net_SSH2($host, $port, 10); 
if (!$ssh->login($user, $pass)) { 
    exit("Login Failed"); 
} 

// Test->Show the working directory 
echo $ssh->exec("pwd"); 
// Create an environment variable "TEST_VAR" with the value "Test" 
echo $ssh->exec("export TEST_VAR=Test"); 
// Give the content of the above created variable out 
echo $ssh->exec("echo \$TEST_VAR"); 

變量的創建不起作用 ,我想不通爲什麼 - 因爲沒有任何錯誤。 這甚至可能與phpseclib?

我會非常感謝任何幫助和提示。

問候 西蒙

回答

1

$ssh->exec不保留狀態。因此,類似地,您不能執行$ssh->exec('cd /some/random/path'); echo $ssh->exec('pwd')並期望它輸出/some/random/path

您有幾個選項。

  1. 鏈接命令。例如。 $ssh->exec("pwd; export TEST_VAR=Test; echo \$TEST_VAR");

  2. 使用交互模式。例如。 $ssh->read('[prompt]'); $ssh->write("pwd\n"); $ssh->read('[prompt]'); $ssh->write("export TEST_VAR=Test\n");

  3. 將所有要運行的命令放入shell腳本中,然後運行shell腳本。

更多信息:

http://phpseclib.sourceforge.net/ssh/examples.html#chdir

相關問題