我如何使用phpseclib从我的php服务器上传文件 - >一些其他服务器?

时间:2013-03-20 07:51:54

标签: php phpseclib

我试图将文件从我的php服务器上传到其他服务器 (我的工作场所非常蹩脚,足以阻止ssh流量)

无论如何,这就是我要做的事情: (at:/public_html/manage.php

<?php

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib/phpseclib');
include('Net/SSH2.php');
include('Net/SFTP.php');

$ssh = new Net_SSH2('SomeServer',22); //starting the ssh connection to localhost
if (!$ssh->login('root', '12345')) { //if you can't log on...
    exit('ssh Login Failed');
}
$sftp = new Net_SFTP('SomeServer',22);
if (!$sftp->login('root', '12345')) { //if you can't log on...
    exit('sftp Login Failed');
}
echo $sftp->pwd();

$output = $sftp->put('/root/1_yum_stuff.sh', '1_yum_stuff.txt');
echo $output;
$output = $ssh->exec('ls -a');
//$output = $ssh->exec('./1_yum_stuff.sh & 1>1.txt');
echo $output;
$output = $ssh->exec('pwd');
echo $output;
echo("3rd try!");
?>

问题是,文件&#34; 1_yum_stuff.txt&#34;位于我的php服务器上的/ public_html /文件夹中,而sftp只是无法移动文件。

无论如何,这是使用phpseclib的sftp模块的正确方法吗? (例如把?)

谢谢:)!

1 个答案:

答案 0 :(得分:2)

我会稍微改写你的代码。例如:

<?php

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib/phpseclib');
include('Net/SSH2.php');
include('Net/SFTP.php');

$sftp = new Net_SFTP('SomeServer',22);
if (!$sftp->login('root', '12345')) { //if you can't log on...
    exit('sftp Login Failed');
}
echo $sftp->pwd();

$output = $sftp->put('/root/1_yum_stuff.sh', '1_yum_stuff.txt');
echo $output;
$output = $sftp->exec('ls -a');
//$output = $sftp->exec('./1_yum_stuff.sh & 1>1.txt');
echo $output;
$output = $sftp->exec('pwd');
echo $output;
echo("3rd try!");
?>

Net_SFTP扩展了Net_SSH2,因此它继承了所有方法。此外,CBroe是正确的 - 没有$sftp->put() phpseclib的第三个参数将创建/root/1_yum_stuff.sh,其中包含15个字节(即。strlen("1_yum_stuff.txt"))。