crontab -e
greift zunächst eine Textvorlage auf, offenbar aus dieser Dateihttps://anonscm.debian.org/cgit/pkg-cron/pkg-cron.git/tree/crontab.c. Ich möchte diesen Textblock programmgesteuert abrufen, damit ich dann am Ende der Vorlage Zeilen mit Cron-Jobs anhängen kann, sodass es wie eine manuell bearbeitete Cron-Datei aussieht.
crontab -e > somefile
funktioniert nicht, weil es in einer interaktiven Shell hängen bleibt.
crontab -l > somefile
funktioniert auch nicht, da beim Anlegen eines Benutzerkontos keine Crontab-Datei vorhanden ist.
Ich könnte es mit sed
der Textvorlage versuchen, aber wo würde sie sich in einem laufenden System befinden? Und wäre sie beispielsweise in einem Image (Ubuntu) vorhanden, das von einem Hosting-Anbieter bereitgestellt wird, oder müsste ich das Quell-Repository zuerst zur Apt-Liste hinzufügen?
Vielleicht wäre es einfacher, export VISUAL=nano; crontab -e
Strg+O, Enter und Strg+X zu senden, um ohne Benutzerinteraktion eine neue Crontab-Datei zu erstellen. Aber wie sende ich Tastenanschläge an eine interaktive Shell innerhalb eines Bash-Skripts?
Antwort1
Da die Vorlage im crontab
Programm selbst eingebettet ist, muss sie in keiner anderen Datei vorhanden sein.
Um es auf einem System zu extrahieren, auf dem Sie keine Crontab haben, versuchen Sie, Ihren Editor vorübergehend auf einzustellen touch
.
VISUAL=touch crontab -e
crontab -l >saved
Möglicherweise können Sie es auch mit extrahieren strings
oder einfach als Dokument hier in Ihr eigenes Skript einbetten.