我需要做一些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在类或其他东西,所以我可以传递变量。
我将如何实现这样的目标?
由于
答案 0 :(得分:1)
我相信你可以通过简单解析Python中的命令行参数来使用exec()
函数来完成它。
像:
import sys
print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)
您可以像列表一样访问sys.argv
中的元素。
(您还可以查看提供更多(类C)参数传递选项的getopt module,但我相信上述解决方案可以做到。)
如果exec()
函数不起作用,我相信您可以考虑在PHP中使用system function:
这样的事情:
$mystring = system('SFTPUpload.py remoteFile serverLocation', $retval);