我有个问题。我一直在努力学习Python。对于一个项目,我想为我的备份服务器制作一个ncurses GUI。我的备份服务器运行rdiff backup,我想让ncurses接受变量名并将它们插入到脚本中。我一直在努力阅读,所以我不会问愚蠢的问题。在
下面是我运行脚本的函数:
def runScript():
# Cannot concatenate 'str' and 'list' objects
#script = rdiff + rdiffArgs
script = rdiff + ' ' + rdiffVerbosity + ' ' + rdiffStatistics \
+ ' ' + clientName + '@' + clientHost + '::' + clientDir \
+ ' ' + serverDir
os.system(script)
我最初认为将所有变量添加到一个列表中,这样我就可以运行say
^{pr2}$有没有更好的方法不需要所有的空格连接?在
谢谢你的帮助
编辑:让我把整个剧本发到现在。我不是很清楚,我真的很感谢你的帮助和耐心
#!/usr/bin/env python
import os
import smtplib
# Global variables
rdiff = '/usr/bin/rdiff-backup'
rdiffVerbosity = '-v5'
rdiffStatistics = '--print-statistics'
emailSmtp = 'smtp.gmail.com'
smtpPort = '465'
emailUsername = 'reports'
emailPassword = '3kc9dl'
emailTo = 'user@domain.com'
emailFrom = 'internal@domain.com'
serverName = 'root'
serverHost = 'SV-Datasafe'
serverDir = '/srv/backup/SV-Samba01'
clientName = 'root'
clientHost = 'SV-Samba01'
clientDir = '/srv'
rdiffArgs = rdiffArgs = [rdiffVerbosity, rdiffStatistics, \
clientName + '@' + clientHost + '::' \
+clientDir + ' ' + serverDir]
time = ''
dateStamp = datetime.now()
def sendEmail():
subject = dateStamp + clientName
body = clientDir + ' on ' + clientHost + ' backed up to ' + serverName + \
' in the directory ' + serverDir + ' on ' + dateStamp
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (emailFrom, emailTo, subject, body)
deliverEmail = smtplib.SMTP(emailSmtp, port=smtpPort)
deliverEmail.login(emailUsername, emailPassword)
def runScript():
# Cannot concatenate 'str' and 'list' objects
#script = rdiff + rdiffArgs
script = rdiff + ' ' + rdiffVerbosity + ' ' + rdiffStatistics \
+ ' ' + clientName + '@' + clientHost + '::' + clientDir \
+ ' ' + serverDir
os.system(script)
# TODO:: Logging
尝试使用subprocess模块并以列表形式传递参数
或者如果已经将参数作为列表,请使用类似的方法
^{pr2}$使用连接路径os.path.join操作系统在
连接字符串如下:“.join(['a','b'])或“,”.join(['c','d'])
哪个部分难?我不确定我100%理解这个问题
是这个吗?在
可以使用格式说明符
或者说你的rdiffArgs已经在列表中了
^{pr2}$你可以用空格把他们连起来
最后,您可能想知道,您可以在脚本中导入rdiff,因为rdiff备份是用Python编写的
以上内容备份/etc/to/tmp/backup。这样,就不必对rdiff backup进行系统调用。当然,这取决于你。进行系统调用有时更容易
相关问题 更多 >
编程相关推荐