装置完成进入下一步。
编译libssh2
在从sourceforge网站下载了Libssh2以后,咱们需求编译它,不外不要忧虑,你只需求依照以下的办法操作:
以下为援用的内容:
cd /usr/src
wget http://surfnet.dl.sourceforge.net/sourceforge/libssh2/libssh2-0.14.tar.gz
tar -zxvf libssh2-0.14.tar.gz
cd libssh2-0.14/
./configure
make all install
假如你想反省是不是有了一个新版本,可以检查SF.NET.不外,0.14这个版本就足够了。
装置
装置ssh2.so
下一步,咱们需求将libssh和 PHPr链接起来。有一个PECL模块可以完成这个功效。咱们可使用PEAR装置它。
pear install -f ssh2
-f参数确保SSH2被装置,即便并没有一个不乱的选择对象。你还可使用以下的包称号:ssh2-beta来强交运行。
如今你需求确保咱们这个新的SSH2.SO模块被PHP加载。编纂你的php.ini文件(关于CLI适用法式:/etc/php5/cli/php.ini,关于Apache适用法式:/etc/php5/apache2/php.ini)
extension=ssh2.so
这应当放在“Dynamic Extensions”的上面,大约在第515行摆布。
PHP撑持SSH编写代码
你方才在PHP中启用了SSH2。那末如今应当若何使用它呢?有两个选择。SSH撑持:
1、履行办法:
这告知你的办事器的操作体系来履行甚么器材,而且经由过程管道传回到你的剧本。
2、外壳办法:
这类办法在操作体系中翻开一个实践的外壳,这正像经由过程终端使用法式登录时所操作的那样。有一些路由器并没有一个完整的POSIX分歧性实行进程,而是在你登录时当即运转其本身的使用法式。这时候你就需求这类办法。
上面咱们分离胪陈之:
第一种办法:履行
你最好为上面的代码创立函数或是一个类,不外本文仅仅起到一个为您供应根基不雅念的感化,所以说你可以如斯入手下手:
以下为援用的内容:
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist")
// log in at server1.example.com on port 22
if(!($con = ssh2_connect("server1.example.com", 22))){
echo "fail: unable to establish connection\n";
} else {
// try to authenticate with username root, password secretpassword
if(!ssh2_auth_password($con, "root", "secretpassword")) {
echo "fail: unable to authenticate\n";
} else {
// allright, we're in!
echo "okay: logged in...\n";
// execute a command
if(!($stream = ssh2_exec($con, "ls -al" )) ){
echo "fail: unable to execute command\n";
} else{
// collect returning data from command
stream_set_blocking( $stream, true );
$data = "";
while( $buf = fread($stream,4096) ){
$data .= $buf;
}
fclose($stream);
}
}
第二种办法:外壳
一样事理,你也能够为以下的代码编写函数或一个类。不外,本文仅仅供应根基不雅念:
以下为援用的内容:
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist")
// log in at server1.example.com on port 22
if(!($con = ssh2_connect("server1.example.com", 22))){
echo "fail: unable to establish connection\n";
} else {
// try to authenticate with username root, password secretpassword
if(!ssh2_auth_password($con, "root", "secretpassword")) {
echo "fail: unable to authenticate\n";
} else {
// allright, we're in!
echo "okay: logged in...\n";
// create a shell
if(!($shell = ssh2_shell($con, 'vt102', null, 80, 40, SSH2_TERM_UNIT_CHARS))){
echo "fail: unable to establish shell\n";
} else{
stream_set_blocking( $shell, true );
// send a command
fwrite($shell,"ls -al\n");
sleep(1);
// & collect returning data
$data = "";
while( $buf = fread($shell,,4096) ){
$data .= $buf;
}
fclose($shell);
}
}
}