Saber la IP de un cliente rlogin

Como podría saber la IP de un equipo WINDOWS con DHCP que se conecta a una máquina UNIX, y como acualizar el fichero hosts del UNIX, con la IP que va variando debido al servidor DHCP.

1 respuesta

Respuesta
1
Es cierto, me faltó el archivo hosts en el egrep, por lo que la forma correcta sería:
egrep -v " PC1 |^$IP_PC| $IP_PC " /etc/hosts > hosts.1
Pruébalo, en todo caso, voy a ver si puedo conseguir un linux como para probarlo ahí, ya que yo lo estoy probando en un AIX.-
Los usuarios se conectan siempre con el mismo equipo, y el equipo se llama con el login.
He hecho "copy paste" de tus instrucciones en un script (Reliant UNIX y en un Linux Red Hat) con echo de las variables
La primera instrucción no me saca nada en el Unix, en el Linux va bien, pero en los 2 sistemas se me queda en el egrep, el fichero se crea vacío.
[dani@daniweb dani]$ sh nomhost
IP_PC dani dani
IP_NEW 127.0.0.1 daniweb localhost.localdomain localhost 149.200.0.5 dani
Creo que el problema pasa por identificar el nombre de la PC que se está conectando. Porque se puede identificar qué usuario se está conectando y desde qué IP, pero no sabemos el nombre de la PC. Si vos me decís que un usuario se conecta desde la misma PC siempre, podemos pensar en usar algo más o menos así:
Suponemos que el usuario es "pepe" y el nombre de su PC es PC1:
-- Primero --
IP_PC=`who |grep pepe |awk '{ printf("%s\n",$6) }' |sed -e "s/[(|)]//g"`
-- luego --
IP_NEW=`egrep "^$IP_PC| $IP_PC " /etc/hosts |cut -f1 -d" "`
-- luego --
test -z "$IP_NEW" && IP_NEW=$IP_PC
-- luego --
egrep -v " PC1 |^$IP_PC| $IP_PC " > hosts.1
-- luego --
echo "$IP_NEW PC1" >> hosts.1
-- luego --
cp hosts.1 /etc/hosts
Pruébalo bien, ya que esto me funcionó en un equipo, pero no estoy tan seguro que funcione para todos los unixs. Por otro lado, fíjate de respetar los espacios en blanco en los comandos que te pasé, ya que en algunos casos es importante.-
Ya consigo montar el fichero hosts con la dirección nueva, ¿como puedo reemplazar un fichero como el /etc/hosts -> /etc/inet/hosts, que solo tiene permisos root?
Esto es lo que he montado:
# busco el login
SOY=`who am i | cut -f1 -d" "`
# busco la ip
IP_PC=`finger | grep "$SOY" |cut -c 61-76`
# le quito los espacios detras
IP_PC=`echo "$IP_PC" | cut -f1 -d" "`
# vuelco todas las ip menos la mia
grep -v "$SOY" /etc/hosts > $HOME/hosts.1
# añado mi nueva ip
echo "$IP_PC $SOY" >> $HOME/hosts.1
mv /etc/inet/hosts /etc/inet/hosts.bak
mv $HOME/hosts.1 /etc/inet/hosts
cat /etc/inet/hosts | more
Gracias y saludos.
Es lo que había pensado, Muchas gracias por tu ayuda.
La única forma que veo de hacer eso es hacer un programa en C que lo único que haga es ejecutar el script que vos hiciste, y a dicho programa, ponerle los permisos como para que se ejecute con privilegios de root es decir, owner=root y permisos rwsr-xr-x (chmod 4755) Con éstos lográs que el script tenga privilegios para reemplazar el archivo.-

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas