2016-02-01 90 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

相关问题