Question: Is it possible to have a Perl script run shell aliases? I am running into a situation where we've got a Perl module I don't have access to modify and one of the things it does is logs into multiple servers via SSH to run some commands remotely. Sadly some of the systems (which I also don't have access to modify) have a buggy SSH server that will disconnect as soon as my system tries to send an SSH public key. I have the SSH agent running because I need it to connect to some other servers.

My initial solution was to set up an alias to set ssh to ssh -o PubkeyAuthentication=no, but Perl runs the ssh binary it finds in the PATH instead of trying to use the alias.

It looks like the only solutions are disable the SSH agent while I am connecting to the problem servers or override the Perl module that does the actual connection.

Answer: 
Alter the PATH before you run the perl script, or use this in your .ssh/config

```
Host *
  PubkeyAuthentication no

```
Why don't you skip the alias and just create a shell script called `ssh` in a directory somewhere, then change the path to put that directory before the one containing the real `ssh`?

I had to do this recently with `iostat` because the new version output a different format that a third-party product couldn't handle (it scanned the output to generate a report).

I just created an `iostat` shell script which called the real `iostat` (with hardcoded path, but you *could* be more sophisticated), passing the output through an `awk` script to massage it into the original format. Then, I changed the path for the third-party program and it started working fine.