Abrufen der Crontab-Textvorlage aus einem Bash-Skript

375
user2066480

crontab -eholt sich zunächst eine Textvorlage, anscheinend aus dieser Datei https://anonscm.debian.org/cgit/pkg-cron/pkg-cron.git/tree/crontab.c . Ich möchte diesen Textblock programmgesteuert abrufen, sodass ich am Ende der Vorlage Zeilen mit Cron-Jobs anfügen kann, sodass er wie eine manuell bearbeitete Cron-Datei aussieht.

crontab -e > somefile funktioniert nicht, weil es an einer interaktiven Shell hängen bleibt.

crontab -l > somefile funktioniert auch nicht, weil beim Erstellen eines Benutzerkontos keine Crontab-Datei vorhanden ist.

Ich könnte seddie Textvorlage ausprobieren, aber wo würde sie sich in einem laufenden System befinden? Und wäre es auch in einem von einem Hostinganbieter bereitgestellten Image (Ubuntu) vorhanden, oder müsste ich das Quellenrepo zuerst zur Liste hinzufügen?

Vielleicht wäre es einfacher export VISUAL=nano; crontab -e, Strg + O, Enter und Strg + X zu senden und dann eine neue Crontab-Datei ohne Benutzerinteraktion zu erstellen. Aber wie sende ich Tastenanschläge an eine interaktive Shell in einem Bash-Skript?

0
Bitte erklären Sie mehr über Ihr Problem. Es ist unklar, was Sie tun möchten, wenn der Benutzer gerade erstellt wird und keine funktionierende Cron-Datei hat. Sie können einige Vorlagen in / etc finden. MTG vor 6 Jahren 0
Ich habe es irgendwie manuell in https://anonscm.debian.org/cgit/pkg-cron/pkg-cron.git/tree/crontab.c gefunden. Wie kann ich diesen Textblock programmatisch in ein Bash-Skript einfügen ? Es ist der Textblock, der in Zeile 592 beginnt. user2066480 vor 6 Jahren 0
Entfernen Sie \ n und "und Sie können es in ein Bash-Skript einfügen MTG vor 6 Jahren 0
Sie müssen Ihrem Problem mehr hinzufügen. Sie müssen angeben, welche Parameter einer Crontab-Zeile festgelegt werden sollen und welche Sie anpassen möchten, z. B. Datumsangaben, Stunden oder das Programm MTG vor 6 Jahren 0
Bei Ubuntu sind die Quelldateien normalerweise nicht vorhanden, es sei denn, das Quellrepo ist ausgewählt. Sagen Sie in einem Server-Image von einem Hosting-Provider. user2066480 vor 6 Jahren 0
Dann müsste ich die Datei sedieren, um diesen Textblock zu extrahieren? Ich möchte nur den Originaltext als Vorlage verwenden, wenn Sie programmatisch eine Crontab-Datei für einen neuen Benutzer erstellen, so einfach ist das. Andernfalls ist es nur eine leere Datei mit den neuen Jobs. Es ist eine kosmetische, okliche Sache. Es tut mir leid, wenn ich deine Zeit vergeude. user2066480 vor 6 Jahren 0
Überhaupt nicht, aber Ihr Beitrag ist vage und unterscheidet sich deutlich von Ihren Kommentaren. Bitte aktualisieren Sie den Beitrag mit diesem Link und allen Details. MTG vor 6 Jahren 0

1 Antwort auf die Frage

0
tripleee

Da die Vorlage im crontabProgramm selbst eingebettet ist, muss sie in keiner anderen Datei vorhanden sein.

Um es auf einem System zu extrahieren, auf dem Sie keine Crontab haben, setzen Sie den Editor vorübergehend auf touch.

VISUAL=touch crontab -e crontab -l >saved 

Möglicherweise können Sie es auch extrahieren stringsoder einfach als Here-Dokument in Ihr eigenes Skript einbetten.

user @ vps: ~ $ VISUAL = touch crontab -e kein crontab für benutzer - mit leerem leer Keine Änderung vorgenommen user2066480 vor 6 Jahren 0
Könnten Sie Ihre zwei anderen Vorschläge erweitern? user2066480 vor 6 Jahren 0
Kopieren Sie es aus der Quelldatei, die Sie im Internet gefunden haben. Sie können möglicherweise etwas Ähnliches tun, indem Sie "strings" auf der lokalen `crontab'-Binärdatei ausführen, aber die Ausgabe ist ziemlich laut. tripleee vor 6 Jahren 0
... oder ersetzen Sie "touch" durch ein simpie "sed" -Skript, das einen Kommentar hinzufügt. Die Syntax variiert zwischen den Dialekten, aber versuchen Sie `VISUAL = 'sed -i \ $ a \\ #' crontab -e` tripleee vor 6 Jahren 0