질문이 있습니다. 나는 정말로 파이썬을 배우려고 노력 해왔다. 프로젝트의 경우 백업 서버용 ncurses GUI를 만들고 싶습니다. 내 백업 서버는 rdiff-backup을 실행하며, ncurses에 변수 이름을 입력하고 스크립트에 연결하려고합니다. 나는 많은 독서를하려고 노력했기 때문에 나는 바보 같은 질문을하지 않는다. 여기 Linux 용 Python 스크립팅 명령
스크립트를 실행하기위한 제 기능입니다 : 내가 원래 깔끔한 것이라고 생각 목록에 모든 변수를 추가, 그래서 난 그냥script = rdiff + rdiffArgs
말을 실행할 수 있습니다 무엇
def runScript():
# Cannot concatenate 'str' and 'list' objects
#script = rdiff + rdiffArgs
script = rdiff + ' ' + rdiffVerbosity + ' ' + rdiffStatistics \
+ ' ' + clientName + '@' + clientHost + '::' + clientDir \
+ ' ' + serverDir
os.system(script)
모든 공간 연결없이이 작업을 수행하는 더 좋은 방법이 있습니까?
감사합니다.
편집 : 지금까지 전체 스크립트를 게시 해 드리겠습니다. 나는 매우 명확하지 있었고, 난 정말 당신의 도움과 인내
#!/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 = '[email protected]'
emailFrom = '[email protected]'
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
같은 목록 사용 무언가로 인수를 가지고 있지만, 내 이해에서 당신은 rdiffArgs 문자열의리스트가되고 싶어요, 그리고 문자를 추가하는 경우 'rdiff'그 앞에서? 당신이 찾고있는 것 같아 : 스크립트 = [rdiff] + rdiffArgs 또는 문자열을 원한다면 '.'([rdiff] + rdiffArgs). – abeyer
그 결과리스트가됩니다. asker는 os.system()에 제공되는 결과 문자열을 원할 것입니다. –
'os.system()'이 사용되어서는 안되기 때문에 이것을 가능하게하는 모든 대답은 부정확 한 것으로 간주되어야합니다. –