Hola, tengo un problema con el comando sed no consigo modificar un fichero /etc/passwd
Script tiene que cambia el directorio de conexion de un usuario
Alguna alma caritativa que conteste?
if [ $# -ne 3 ]
then
echo "uso:" $0 "<Usuario> <Nombre> <Directorio>"
exit 1
fi
if [ ! -d "$3" ] #comprueba si ruta dada existe
then
echo "El directorio no existe"
exit 1
fi
st=`grep "$1" /etc/passwd | grep "$2" |cut -f6 -d":"`
if [ -z "$st" ] #comprueba si vaiable st esta vacia
then
echo "El usuario no existe"
exit 1
fi
echo "Quiere cambiar el directorio de conexion de " $1 "actualmente" $st "a" $3 "(S/N)?"
read op
case $op in
[sS])
echo "Modificando fichero..."
sed '/"$1"/ s/"$st"/"$3"/g' /etc/passwd >newfile #no funciona
echo "Fichero modificado"
;;
*)
echo "El fichero no sera modificado"
exit 1
;;
esac
edito parece que ya funciona.
Sed permite utilizar mas delimitadores pongo el codigo por si alguien tiene el mismo problema
if [ $# -ne 3 ]
then
echo "uso:" $0 "<Usuario> <Nombre> <Directorio>"
exit 1
fi
if [ ! -d "$3" ] #comprueba si ruta dada existe
then
echo "El directorio no existe"
exit 1
fi
st=`grep "$1" /etc/passwd | grep "$2" |cut -f6 -d":"`
if [ -z "$st" ] #comprueba si vaiable st esta vacia
then
echo "El usuario no existe"
exit 1
fi
echo "Quiere cambiar el directorio de conexion de " $1 "actualmente" $st "a" $3 "(S/N)?"
read op
case $op in
[sS])
echo "Modificando fichero..."
sed "/$1/ s+$st+$3+g" /etc/passwd >newfile
echo "Fichero modificado"
echo `grep "$1" newfile | grep "$2" |cut -f6 -d":"`
;;
*)
echo "El fichero no sera modificado"
exit 1
;;
esac