¿Es posible tener Perl alias shell script run?
Pregunta
¿Es posible tener un script Perl alias plazo de concha? Estoy corriendo en una situación en la que tenemos un módulo de Perl no tengo acceso a modificar y una de las cosas que hace es se registra en varios servidores a través de SSH para ejecutar algunos comandos de forma remota. Lamentablemente algunos de los sistemas (que yo también no tiene acceso a la modificación) dispone de un servidor con errores SSH que desconectará tan pronto como mi sistema intenta enviar una clave pública SSH. Tengo el agente SSH corriendo porque lo necesito para conectarse a otros servidores.
Mi solución inicial era crear un alias para configurar ssh ssh -o PubkeyAuthentication = no, pero Perl se ejecuta el binario ssh se encuentra en el PATH en lugar de tratar de utilizar el alias.
Parece que las únicas soluciones son desactivar el agente SSH mientras yo estoy conectando a los servidores problema o anular el módulo de Perl que hace la conexión real.
Solución
alterar la trayectoria antes de ejecutar el script de perl, o utilizar esto en su .ssh / config
Host *
PubkeyAuthentication no
Otros consejos
Tal vez usted podría poner un comando llamado ssh
en PATH
por delante de la ssh
que corre ssh
como quiere que se ejecute.
¿Por qué no se salta los alias y acaba de crear un script de shell llamado ssh
en un directorio en algún lugar, a continuación, cambiar la ruta para poner ese directorio antes de la que contiene la ssh
real?
he tenido que hacer esto recientemente con iostat
debido a que la nueva versión de salida de un formato diferente que un producto de terceros no podía manejar (que escanea la salida para generar un informe).
He creado un script de shell iostat
la que llama el iostat
real (con la ruta codificada, pero podría ser más sofisticados), pasando la salida a través de una secuencia de comandos awk
para dar masajes en el formato original. Entonces, he cambiado la ruta para el programa de terceros y comenzó a trabajar muy bien.
Se puede declarar una función en .bashrc (o .profile o lo que sea) con ese nombre. Se podría tener este aspecto (debe romper):
function ssh {
/usr/bin/ssh -o PubkeyAuthentication=no "$@"
}
Pero el uso de un archivo de configuración podría ser la mejor solución en su caso.