crontab -e
Inicialmente recoge una plantilla de texto, aparentemente de este archivo.https://anonscm.debian.org/cgit/pkg-cron/pkg-cron.git/tree/crontab.c. Me gustaría recuperar ese bloque de texto mediante programación, para luego poder agregar líneas con trabajos cron al final de la plantilla, para que parezca un archivo cron editado manualmente.
crontab -e > somefile
no funciona porque se queda atascado en un shell interactivo.
crontab -l > somefile
Tampoco funciona porque no hay ningún archivo crontab cuando se crea una cuenta de usuario.
Podría probar sed
la plantilla de texto, pero ¿dónde estaría ubicada en un sistema en ejecución? Y también, ¿estaría presente, por ejemplo, en una imagen (Ubuntu) implementada por un proveedor de alojamiento, o tendría que agregar primero el repositorio de fuentes a la lista de aptos?
¿Quizás una forma más fácil sería export VISUAL=nano; crontab -e
enviar Ctrl+o, Enter, Ctrl+X para crear un nuevo archivo crontab sin interacción del usuario? Pero, ¿cómo envío pulsaciones de teclas a un shell interactivo dentro de un script bash?
Respuesta1
Dado que la plantilla está integrada en el crontab
propio programa, no es necesario que exista en ningún otro archivo.
Para extraerlo en un sistema donde no tienes un crontab, intenta configurar temporalmente tu editor en touch
.
VISUAL=touch crontab -e
crontab -l >saved
También puedes extraerlo con strings
, o simplemente incrustarlo como un documento aquí en tu propio script.