Peter J. Holzer <hjp-usenet3@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. -- Ullrich Horlacher Server und Virtualisierung Rechenzentrum TIK Universitaet Stuttgart E-Mail: horlacher@tik.uni-stuttgart.de Allmandring 30a Tel: ++49-711-68565868 70569 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/