Peter J. Holzer <
hjp-u...@hjp.at> wrote:
>>> % cat foo_wrapper
>>> #!/usr/bin/python3
>>>
>>> import time
>>>
>>> def my_asctime(tm):
>>> return "Gotcha!"
>>>
>>> time.asctime = my_asctime
>>>
>>> with open("foo") as f:
>>> code = f.read()
>>> exec(code)
>>> % ./foo_wrapper
>>> Gotcha!
>>
>> "foo" waere dann "/usr/bin/duplicity" ?
>
> Ja.
>
>> Aber da steht doch drin:
>> import time
>> was mir meine grad modifizierte time.asctime() Funktion wieder ueberschreibt?
>
> Nein. "import" funktioniert ähnlich wie "use" in Perl. Wenn ein Modul
> schon importiert wurde, wird es kein zweites Mal importiert.
Ahh... sehr gut. Wieder was gelernt :-)
Prinzipiell gefaellt mir dieser Ansatz, aber ich hab wohl noch was falsch
gemacht (duply ruft duplicity auf):
root@obertux:/opt/s3tik/bin# type -a duplicity
duplicity is /opt/s3tik/bin/duplicity
duplicity is /usr/bin/duplicity
root@obertux:/opt/s3tik/bin# duply root list
Start duply v2.2, time is 2022-12-05 08:57:09.
Using profile '/root/.duply/root'.
Using installed duplicity version 0.8.12, python 3.8.10 (/usr/bin/python3), gpg 2.2.19 (Home: /root/.gnupg), awk 'mawk 1.3.4 20200120', grep 'grep (GNU grep) 3.4', bash '5.0.17(1)-release (x86_64-pc-linux-gnu)'.
Checking TEMP_DIR '/tmp' is a folder and writable (OK)
Test - En/Decryption skipped. (GPG disabled)
--- Start running command LIST at 08:57:10.534 ---
Traceback (innermost last):
File "<string>", line 106, in <module>
File "<string>", line 92, in with_tempdir
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 1538, in main
do_backup(action)
File "/usr/lib/python3/dist-packages/duplicity/dup_main.py", line 1558, in do_backup
col_stats = dup_collections.CollectionsStatus(globals.backend,
File "/usr/lib/python3/dist-packages/duplicity/dup_collections.py", line 744, in set_values
self.get_backup_chains(partials + backend_filename_list)
File "/usr/lib/python3/dist-packages/duplicity/dup_collections.py", line 896, in get_backup_chains
add_to_chains(s)
File "/usr/lib/python3/dist-packages/duplicity/dup_collections.py", line 884, in add_to_chains
log.Debug(_(u"Found backup chain %s") % (new_chain.short_desc()))
File "/usr/lib/python3/dist-packages/duplicity/dup_collections.py", line 408, in short_desc
return u"[%s]-[%s]" % (dup_time.timetopretty(self.start_time),
File "/usr/lib/python3/dist-packages/duplicity/dup_time.py", line 169, in timetopretty
return time.asctime(time.localtime(timeinseconds))
File "/opt/s3tik/bin/duplicity", line 6, in isodate
return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(timeinseconds))
TypeError: an integer is required (got type time.struct_time)
08:57:10.886 Task 'LIST' failed with exit code '30'.
--- Finished state FAILED 'code 30' at 08:57:10.886 - Runtime 00:00:00.351 ---
root@obertux:/opt/s3tik/bin# cat duplicity
#!/usr/bin/python3
import time
def isodate(timeinseconds):
return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(timeinseconds))
time.asctime = isodate;
with open("/usr/bin/duplicity") as duplicity:
code = duplicity.read()
exec(code)
root@obertux:/opt/s3tik/bin# fpg -p asctime /usr/lib/python3/dist-packages/duplicity/dup_time.py
def timetopretty(timeinseconds):
u"""Return pretty version of time"""
return time.asctime(time.localtime(timeinseconds))
# return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(timeinseconds))
Mit der letzten auskommentierten Zeile hatte es zuvor funktioniert.
Ich verstehe nicht, warum es nun zu obiger Fehlermeldung kommt (line 169
ist die drueber).
Was hab ich uebersehen?
>>> Was mich wieder zu der Frage zurückführt, wie Du da ein Wrapper-Script
>>> installieren willst.
>>
>> $HOME/bin, /var/tmp/bin, etc
>
> D.h. du willst das nur für dich, nicht für die anderen User des Systems?
> (Dass Du oben /opt erwähnst, widerspricht dem etwas)
Ich teste es erst mal lokal auf meinem eigenem System, da kann ich /opt
beschreiben.