在PHP中,我需要做一些SFTP,但我遇到了问题,因为我不被允许安装SSH扩展,而且phpseclib不能按我需要的方式工作。
因此,我将执行一个Python脚本来为我做SFTP
exec("SFTPUpload.py remoteFile serverLocation");
因此,我执行SFTPUpload.py时,会将需要传输的文件在服务器上的位置以及它在服务器上也需要传输的位置传递给它。
就Python脚本而言(我对Python不太熟悉),我想它将类似于以下
username='sftpUser'
password='sftpPassword'
port=22
#SFTP
client.load_system_host_keys()
print " hostname =%s 'n username=%s 'n password=%s 'n" (hostname,username,password)
t = paramiko.Transport((hostname, port))
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(source,destination)
sftp.close()
t.close()
然而,按照我从PHP调用它的方式,我需要Python在一个类或其他类中,这样我就可以向它传递变量。
我该如何实现这样的目标?
感谢
我相信您可以通过简单地解析Python中的命令行参数,使用exec()
函数来实现这一点。
类似:
import sys
print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
在这里,您可以像列表一样访问sys.argv
中的元素。
(你也可以看看getopt模块,它提供了更多(类似C的)参数传递选项,但我相信上面的解决方案可以。)
如果exec()
函数不起作用,我相信你可以考虑使用PHP中的系统函数:
类似这样的东西:
$mystring = system('SFTPUpload.py remoteFile serverLocation', $retval);