Obtenga la dirección IP del servidor Linux remoto usando el script bash a través de ssh

Obtenga la dirección IP del servidor Linux remoto usando el script bash a través de ssh

Necesito obtener la dirección IP eth1 de mi servidor Linux remoto usando un script bash a través de ssh y tengo el siguiente comando: /sbin/ifconfig eth1 | grep 'dirección inet:'| grep -v '127.0.0.1' | cortar -d: -f2 | awk '{imprimir $1}'

pero cuando ejecuto:

generar ssh -t $usuario@$remote_host "/sbin/ifconfig eth1 | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $2}' ; echo $ip "dice que no se puede leer "1": no existe dicha variable mientras se ejecuta "spawn ssh -t $user@$remote_host "ip= /sbin/ifconfig eth1 | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'; echo $ip "" (archivo "./ssh2.sh" línea 11)

Entonces, ¿podría ayudarme con este problema? Gracias

Respuesta1

¿Por qué no utilizar ipen lugar del obsoleto ifconfigy omitir todos los greps y cortes adicionales ya que awk puede hacer eso?

Entonces un comando comoip addr show dev eth0 | awk '/^ +inet / {split($2,a,"/"); print a[1]}'

En cualquier caso, la mayor parte de su problema en los comandos de ejemplo tiene que ver con el tipo de comillas que elige y cómo las evalúa bash.

Si hace algo así cfrancy@ws:~$ ssh root@srv01 echo "Hello $USER", el resultado que verá será Hello cfrancy, y no Hello rootcomo cabría esperar. Debido a que ha utilizado comillas dobles "en su comando para el sistema remoto, se evalúan todas las variables.antesse envía el comando. El comando cfrancy@ws:~$ ssh root@srv01 echo 'Hello $USER'regresará Hello rootya que $USERse evalúa en el sitio remoto. Por supuesto, también necesitas cambiar o escapar de tus otras comillas dentro de tu comando compuesto para que todo funcione correctamente.

De todos modos, teniendo en cuenta el comportamiento de las citas, el comando probablemente haría lo que usted desea. aunque creo que mi solución usa solo ip, y awkes una mejor opción ya que solo uso 2 programas en lugar de 4.

ssh -t $user@$remote_host '/sbin/ifconfig eth0 | grep "inet addr:"| grep -v "127.0.0.1" | cut -d: -f2 | awk "{ print $1}"'

información relacionada