montar-trabajo: las comillas que faltaban — el awk fallaba en cada arranque y el grep podía saltarse el mount

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.
This commit is contained in:
Sergio
2026-09-21 19:27:35 +00:00
parent 0d32ec87b1
commit 4b7ef7d5a1
2 changed files with 29 additions and 10 deletions
+1 -1
View File
@@ -55,7 +55,7 @@
"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 }) libres\""
"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\""
]
}
}