ftp php 目录,php扫描FTP服务器目录及其下面的文件

热度379℃

class Ftp

{

/**

* [$ftp_link 定义连接]

* @var boolean

*/

private static $ftp_link = false;

/**

* [$content 返回数组内容]

* @var [type]

*/

public static $content =[];

/**

* [getConfig 配置ftp]

* @return [type] [description]

*/

public function getConfig($type)

{

switch ($type) {

case 'yndx':

$ftp_server ='172.25.20.XXX';

$ftp_user_name ='hqhy0914';

$ftp_user_pass ='hqhy@)(14';

$ftp_server_port ='21';

break;

case 'hqhy':

$ftp_server ='124.243.XXX.XX';

$ftp_user_name ='yndx';

$ftp_user_pass ='SB8F2uCI5lOvEbbQ';

$ftp_server_port ='33900';

break;

case 'sheldon':

$ftp_server='120.26.XX.XXX';

$ftp_user_name='sheldon';

$ftp_user_pass='xiaodong';

$ftp_server_port='21';

break;

}

return [

'ftp_server'=>$ftp_server,

'ftp_user_name'=>$ftp_user_name,

'ftp_user_pass'=>$ftp_user_pass,

'ftp_server_port'=>$ftp_server_port,

];

}

/**

* [getContent 获取内容]

*/

public function getContent()

{

return self::$content;

}

public function getSystemType()

{

return ftp_systype(self::$ftp_link);

}

/**

* [new_ftp_connect 连接ftp]

* @param [type] $config [description]

*/

public static function new_ftp_connect($config)

{

extract($config);

$conn_id = ftp_connect($ftp_server, $ftp_server_port);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

ftp_pasv($conn_id, true);

if ((!$conn_id) || (!$login_result)) {

self::$ftp_link = false;

return self::$ftp_link;

}

self::$ftp_link = $conn_id;

return self::$ftp_link;

}

/**

* [list_all_files 获取内容]

* @param [type] $path [description]

*/

public static function list_all_files($path)

{

//目前下详细文件信息

$results = ftp_rawlist(self::$ftp_link, $path);

//循环处理

foreach ($results as $key => $result) {

// result 例子“drwxrwxr-x 2 1000 1000 4096 Sep 25 04:14 Cron” 字符串转化成数组

$file_detail_info = preg_split("/[\s]+/", $result);

$length = count($file_detail_info);

//判断是否为目录

if ($file_detail_info[0]{0}=='d') {

//判断是否为预告

if (strpos($file_detail_info[$length-1], '预告') !== false) {

continue;

}

//构建新的目录

$new_path =$path.'/'.$file_detail_info[$length-1];

//递归处理

self::list_all_files($new_path);

} else {

//文件名称

$file_name =$file_detail_info[$length-1];

$file_name_info = explode('.', $file_name);

//判断是否为ts文件

if (strtolower($file_name_info[count($file_name_info)-1])=='ts') {

$path = '/'.ltrim($path, '/');

echo $path.'/'.$file_name.'
'."\n";

//存入数组

self::$content[$path.'/'.$file_name] = $path.'/'.$file_name;

}

}

}

}

}

/**

* 判断访问方式

*/

if (isset($_SERVER['SHELL'])) {

$argv_len = count($argv);

if ($argv_len == 1) {

fwrite(STDOUT, "请输入扫描ftp服务器类: 1.yndx 2.hqhy 3.sheldon\n");

$type = trim(fgets(STDIN));

for ($i=0; $i <2; $i++) {

if (!in_array($type, ['yndx','hqhy','sheldon'])) {

fwrite(STDOUT, "输入类型错误,请输入重新输入:");

$type = trim(fgets(STDIN));

}

}

if (!in_array($type, ['yndx','hqhy','sheldon'])) {

fwrite(STDOUT, "参数错误次数太多自动退出,重新执行脚本.");

exit;

}

} else {

$type = $argv[1];

}

fwrite(STDOUT, "命令执行中.......\n");

} else {

if (!array_key_exists('type', $_GET)) {

echo "请输入参数?type 为yndx,sheldon,hqhy一个 例如:http://114.55.36.48:8088?type=hqhy";

exit;

}

$type = $_GET['type'];

if (!in_array($type, ['yndx','hqhy','sheldon'])) {

echo "输入类型错误,请重新输入参数?type 为yndx,sheldon,hqhy一个";

exit;

}

echo '命令执行中.......
'."\n";

}

//实例化对象

$ftp = new Ftp();

$config = $ftp->getConfig($type);

$ftp_list = $ftp->new_ftp_connect($config);

//未连接报错

if ($ftp_list===false) {

die('fail');

}

//根路径

switch ($type) {

case 'yndx':

$path = '/';

break;

case 'hqhy':

$path = '/';

break;

case 'sheldon':

$path = '/home/sheldon';

break;

}

//调用方法

$ftp->list_all_files($path);

$res = $ftp->getContent();

//输出

echo "

";

var_dump($res);

//ftp系统类型

$system_type = $ftp->getSystemType();

echo '
ftp系统类型:'.$system_type;

echo "\n
命令执行完毕\n";

相关评论(0)

a7b81af59ffd0a4146ebdfcaefc4545c.png

发布评论

526d68976081f3dbf994a1bd9fce2f5e.png

您是不是忘了说点什么?

提 交

友情提示:垃圾评论一律封号...

还没有评论,快来抢沙发吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值