Los dos los encontró scripts/sh-superficie-cards.py al inventariar las órdenes
externas de las cards. La card nació así en su único commit (3b305642): no fue
un accidente de edición posterior.
- awk NR==2{print } → awk 'NR==2{print $4}'
Sin comillas, awk daba error de sintaxis SIEMPRE y el echo final imprimía
«montar-trabajo: /vvv libres», sin el número, en cada arranque.
- grep -q /vvv /proc/mounts → grep -q " /vvv " /proc/mounts (y lo mismo
para /work/sergio)
El patrón desnudo matchea cualquier línea que CONTENGA la subcadena, así que
la comprobación «¿ya está montado?» podía dar verdadero por un /vvv/algo y
saltarse el mount en silencio. Latente: hace falta otra línea con esa
subcadena para que muerda.
Probado corriendo el fragmento entero con /proc/mounts sustituido por un
fichero de prueba y mkdir/chmod/chown/mount/blkid stubbeados — nada mutó la
máquina. Antes: en el escenario del falso positivo NO montaba /vvv. Después:
monta, y el echo trae el número. Parsea en busybox, bash y brush.
62 lines
1.8 KiB
JSON
62 lines
1.8 KiB
JSON
{
|
|
"id": "01M2F0NTARTRABAJ0V0VMEN012",
|
|
"label": "montar-trabajo",
|
|
"lifecycle": "oneshot",
|
|
"supervision": "OneShot",
|
|
"priority": "normal",
|
|
"lineage": null,
|
|
"provides": [],
|
|
"requires": [],
|
|
"flow": {
|
|
"input": [],
|
|
"output": []
|
|
},
|
|
"genesis": [],
|
|
"permissions": {
|
|
"filesystem": "read-write",
|
|
"networking": "none",
|
|
"processes": true,
|
|
"ipc": {
|
|
"allow": []
|
|
}
|
|
},
|
|
"soma": {
|
|
"cgroup": {
|
|
"cpu_weight": null,
|
|
"io_weight": null,
|
|
"path": "arje.slice/montar-trabajo"
|
|
},
|
|
"cpu_affinity": null,
|
|
"namespaces": {
|
|
"cgroup": false,
|
|
"ipc": false,
|
|
"mount": false,
|
|
"net": false,
|
|
"pid": false,
|
|
"user": false,
|
|
"uts": false
|
|
},
|
|
"rlimits": {
|
|
"mem_bytes": null,
|
|
"nofile": null,
|
|
"nproc": null
|
|
}
|
|
},
|
|
"schema_version": 1,
|
|
"payload": {
|
|
"Native": {
|
|
"exec": "/bin/busybox",
|
|
"envp": [
|
|
[
|
|
"PATH",
|
|
"/usr/sbin:/usr/bin:/sbin:/bin"
|
|
]
|
|
],
|
|
"argv": [
|
|
"sh",
|
|
"-c",
|
|
"mkdir -p /run/user; chmod 1777 /run/user; for h in /home/*; do u=$(basename $h); id -u $u >/dev/null 2>&1 || continue; mkdir -p /run/user/$(id -u $u); chown $u /run/user/$(id -u $u); chmod 700 /run/user/$(id -u $u); done; d=$(blkid -L trabajo 2>/dev/null); test -n \"$d\" || { echo montar-trabajo: ningun disco con LABEL=trabajo — el volumen no esta enchufado >&2; exit 78; }; mkdir -p /vvv; grep -q \" /vvv \" /proc/mounts || mount \"$d\" /vvv || { echo montar-trabajo: no pude montar el volumen >&2; exit 78; }; test -d /vvv/sergio || exit 0; mkdir -p /work/sergio; grep -q \" /work/sergio \" /proc/mounts || mount --bind /vvv/sergio /work/sergio; echo \"montar-trabajo: /vvv $(df -h /vvv | awk 'NR==2{print $4}') libres\""
|
|
]
|
|
}
|
|
}
|
|
} |