2014-09-05
php远程copy文件以及在远程服务器中执行命令时,所用到的模块是ssh2,以后所有的操作都依据ssh2连接句柄完成。
1. SSH2模块的安装
1.1 安装需要的扩展包
[plain]
wget
tar zxf libssh2-1.4.2.tar.gz
cd libssh2-1.4.2
./configure && make && make install
wget
tar zxf libssh2-1.4.2.tar.gz
cd libssh2-1.4.2
./configure && make && make install
[plain]
wget
cd ssh2-0.11.3
phpize (如果报错命令没有找到,apt-get install php5-dev)
./configure —with-ssh2 && make && make install
wget
cd ssh2-0.11.3
phpize (如果报错命令没有找到,apt-get install php5-dev)
./configure —with-ssh2 && make && make install
1.2 修改php配置信息
[plain]
cd /etc/php5/cgi
vim php.ini
添加项:extension=/usr/lib/php5/20090626/ssh2.so
ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
cd /etc/php5/cgi
vim php.ini
添加项:extension=/usr/lib/php5/20090626/ssh2.so
ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
[plain]
cd /etc/php5/cli
vim php.ini
添加项:extension=/usr/lib/php5/20090626/ssh2.so
ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
cd /etc/php5/cli
vim php.ini
添加项:extension=/usr/lib/php5/20090626/ssh2.so
ssh2.so是编译ssh2时得到的模块,上面是模块的位置。
1.3 重启web服务器
[plain]
/etc/init.d/lighttpd restart
/etc/init.d/lighttpd restart
1.4 查看是否加载了ssh2
[plain]
[root@localhost ~]php -m | grep ssh2
ssh2
[root@localhost ~]php -m | grep ssh2
ssh22. SSH2模块的连接应用
SSH2连接有两种方式,分别是用户名密码,ssh密钥形式。
2.1 用户名与密码
[php]
$connection = ssh2_connect("192.168.6.222",22);
if (ssh2_auth_password($connection,"veno","ubuntu"))
{
echo "Authentication Successful! ";
}else{
die("Authentication Failed...");
}
$connection = ssh2_connect("192.168.6.222",22);
if (ssh2_auth_password($connection,"veno","ubuntu"))
{
echo "Authentication Successful! ";
}else{
die("Authentication Failed...");
}
2.2 ssh密钥
[php]
$connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'root',
'/root/.ssh/id_rsa.pub',
'/root/.ssh/id_rsa'))
{
echo "Public Key Authentication Successful/n";
} else {
echo ('Public Key Authentication Failed');
}
$connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'root',
'/root/.ssh/id_rsa.pub',
'/root/.ssh/id_rsa'))
{
echo "Public Key Authentication Successful/n";
} else {
echo ('Public Key Authentication Failed');
}
Ps: 密钥生成:
在服务器192.168.6.229上面以root登录
[plain]
#ssh-keygen
#ssh-keygen
有什么提问基本上回车即可
后成的公钥在~/.ssh/id_rsa.pub
如果想在229通过密钥验证登录到222上面,则把229的公钥id_rsa.pub cp到222上面,先手动登录root,然后运行:
[plain]
cat id_rsa.pub >> ~/.ssh/authorized_keys
cat id_rsa.pub >> ~/.ssh/authorized_keys
这样就可以在229上面ssh 192.168.6.229不需要输入密码即可登录到222。上面php代码在229上面也可以通过验证。
3. SSH2模块的具体应用
通过SSH2验证通过后,得到的连接符为$connection
3.1 实现远程copy文件
远程服务器文件copy到本地:
bool ssh2_scp_recv ( resource $session, string $remote_file, string $local_file )
Ps: 接收文件时,后面文件名可以为空,如:
[php]
ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/')
ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/')
本地文件copy到远程服务器
bool ssh2_scp_send ( resource $session, string $local_file, string $remote_file [, int $create_mode] )
Ps:发送文件时,后面的文件名不能为空,如:
[php]
ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml');
ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml');
3.2 执行远程服务器上的命令并取返回值
resource ssh2_exec( resource $session, string $command [, string $pty [, array $env [, int $width [, int $height [, int $width_height_type]]]]] )
在229上面执行222上的命令具体实例:
[php]
$tcmd="cd /home/veno/gateway/radiusclient;";
$tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d";
$stream = ssh2_exec($connection, $tcmd);
stream_set_blocking($stream,true);
echo stream_get_contents($stream);
$tcmd="cd /home/veno/gateway/radiusclient;";
$tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d";
$stream = ssh2_exec($connection, $tcmd);
stream_set_blocking($stream,true);
echo stream_get_contents($stream);
附件:测试中应用到的php代码
[php]
<?php
echo "是访问到这里来了";
$connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'root',
'/root/.ssh/id_rsa.pub',
'/root/.ssh/id_rsa'))
{
echo "Public Key Authentication Successful/n";
//$flag=ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/');
//接收时,后面文件名可以为空
//$flag=ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml');
//发送时,后面的文件名不能为空
//echo $flag;
$tcmd="cd /home/veno/gateway/radiusclient;";
$tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d";
$stream = ssh2_exec($connection, $tcmd);
stream_set_blocking($stream,true);
echo stream_get_contents($stream);
} else {
echo ('Public Key Authentication Failed');
}
echo "<br/>";
$connection = ssh2_connect('192.168.6.222', 22);
ssh2_auth_password($connection, 'veno', '*******');
$tcmd="cd /home/veno/gateway/radiusclient;";
$tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d";
$stream = ssh2_exec($connection, $tcmd);
echo "<br/>";
echo "-----------------------------------------------";
stream_set_blocking($stream,true);
echo stream_get_contents($stream);
echo "-----------------------------------------------";
echo "<br/>";
<?php
echo "是访问到这里来了";
$connection = ssh2_connect('192.168.6.222', 22, array('hostkey'=>'ssh-rsa'));
if (ssh2_auth_pubkey_file($connection, 'root',
'/root/.ssh/id_rsa.pub',
'/root/.ssh/id_rsa'))
{
echo "Public Key Authentication Successful/n";
//$flag=ssh2_scp_recv($connection, '/home/xiaozl/veno1.exe', '/home/xiaozl/');
//接收时,后面文件名可以为空
//$flag=ssh2_scp_send($connection, '/home/xiaozl/package.xml', '/home/xiaozl/package.xml');
//发送时,后面的文件名不能为空
//echo $flag;
$tcmd="cd /home/veno/gateway/radiusclient;";
$tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d";
$stream = ssh2_exec($connection, $tcmd);
stream_set_blocking($stream,true);
echo stream_get_contents($stream);
} else {
echo ('Public Key Authentication Failed');
}
echo "<br/>";
$connection = ssh2_connect('192.168.6.222', 22);
ssh2_auth_password($connection, 'veno', '*******');
$tcmd="cd /home/veno/gateway/radiusclient;";
$tcmd.="./nastool.sh get-status app=2b1c5364-db39-c76d-842c-11d4a81d555d";
$stream = ssh2_exec($connection, $tcmd);
echo "<br/>";
echo "-----------------------------------------------";
stream_set_blocking($stream,true);
echo stream_get_contents($stream);
echo "-----------------------------------------------";
echo "<br/>";
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
6
将视频设置为Android手机开机动画的教程
12-11
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
常用dos命令及语法
09-27
PHP中include和require区别之我见
2014-09-05
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
2017-04-12
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
零基础的初学者怎样学习java,或者应该先学什么?
2022-03-21
学ug编程如何快速入门?
2022-03-17
PHP数组函数array
2014-09-05
学习使用C语言/C++编程的7个步骤!超赞~
2022-03-20
球球大作战汉化版下载v19.7.1 安卓版
其它手游 170.54MB
下载
葫芦侠三楼最新破解版下载v4.4.0.6 安卓版
其它手游 34.82MB
下载
葫芦侠7楼破解版免费下载v4.4.0.6安卓最新版
其它手游 34.82MB
下载
葫芦侠八楼免费版下载v4.4.0.6安卓版
其它手游 34.82MB
下载
葫芦侠3楼破解版免费下载v4.4.0.6安卓手机版
其它手游 34.82MB
下载
像素漫斗抱歉,“八神庵”是特指游戏角色的专有名词,不存在符合要求的常用同义词近义词。下载v1.00安卓版
其它手游 206.87MB
下载
葫芦侠4楼破解版游戏修改器下载v4.4.0.6安卓免费版
其它手游 34.82MB
下载
末日餐厅安卓版下载v1.35安卓版
其它手游 73.98MB
下载葫芦侠十楼免费破解版下载v4.4.0.6安卓版
下载
葫芦侠8楼最新破解版下载v4.4.0.6安卓版
下载
猫娘乐园世界连结正版下载v1.9.1 安卓版
下载
像素漫斗全员下载v1.00安卓版
下载
葫芦侠8楼手机版下载v4.4.0.6安卓版
下载
末日餐厅正版官网入口下载v1.35安卓版
下载
我的汉克狗正版下载v26.4.1.48473 安卓版
下载
像素漫斗u鼬神最新版本下载v1.00安卓版
下载