Forum Discussion
Python code using Parallel-SSH library to connect to F5 BigIP
Hi,
I'm trying to use Parallel-SSH (Python library) to connect to F5 BigIP.
This simple code works perfectly toward a Red Hat server, but it fails toward F5 BigIP:
Here is the error message:
pssh.exceptions.AuthenticationError: ('Authentication error while connecting to %s:%s - %s - retries %s/%s', '<IP address>, 22, AuthenticationError(), 1, 1)
Has anyone gotten this to work with the Parallel-SSH library?
I have already tested Paramiko and that works, but I want to use Parallel-SSH.
10 Replies
- Leslie_HubertusRet. Employee
This seems like a question JRahm may be able to answer!
- JRahm
Admin
For anyone else trying to get this to work on Mac...first:
- brew install cmake
- (In a venv) pip install ssh2-python
- (In a venv) pip install parallel-ssh
Will post back on details if I can get it talking to BIG-IP. Just took a minute to get through the pip errors for this module.
UPDATE: Got it working. Works with password or key file if you copied your ssh keys to BIG-IP.
from pssh.clients import ParallelSSHClient hosts = ['ltm1.test.local', 'ltm2.test.local'] #client = ParallelSSHClient(hosts, user='root', password='default') client = ParallelSSHClient(hosts, user='root', pkey='/Users/justme/.ssh/id_rsa') cmd = 'tmsh list ltm pool' output = client.run_command(cmd) for host_out in output: for line in host_out.stdout: print(line) ### One output for brevity ### /Users/justme/PycharmProjects/playground/venv/bin/python /Users/justme/PycharmProjects/playground/sshtest.py ltm pool nginx-pool { members { 172.16.102.5:http { address 172.16.102.5 session monitor-enabled state up } } monitor http } Process finished with exit code 0- Eljay
Cirrus
Thanks, JRahm. Now I see that I wasn't crystal clear, I was using the single host client in Parallel-SSH. See examples for both single and multi host here: https://pypi.org/project/parallel-ssh/
I can adapt my code to this solution as well. But I still wonder if it's a problem with the single host client in the Parallel-SSH library.Here's an example that works in Paramiko:
from paramiko.client import SSHClient p = SSHClient() p.load_system_host_keys() p.connect('<IP>', username=<username>, password=<password>) stdin, stdout, stderr = p.exec_command('uname') print(stdout.read().decode())And here's the code using single host client in Parallel-SSH that fails:
import pssh.exceptions from pssh.clients import SSHClient s = SSHClient('<IP>',user=<username>, password=<password>, timeout=5, num_retries=1) res = s.run_command("uname") print(res) for line in res.stdout: print(line)- JRahm
Admin
Hi Eljay ... This also works just fine for me (both with key or password):
from pssh.clients import SSHClient host = 'ltm15.test.local' s = SSHClient(host, user='root', password='default') # s = SSHClient(host, user='root', pkey='/Users/justme/.ssh/id_rsa') cmd = 'tmsh list ltm pool' res = s.run_command(cmd) print(res) for line in res.stdout: print(line)Output:
/Users/justme/PycharmProjects/playground/venv/bin/python /Users/justme/PycharmProjects/playground/sshtest.py host=ltm15.test.local alias=None exit_code=None channel=<ssh2.channel.Channel object at 0x107c46ef0> exception=None encoding=utf-8 read_timeout=None ltm pool nginx-pool { members { 172.16.102.5:http { address 172.16.102.5 session monitor-enabled state up } } monitor http } Process finished with exit code 0My versions:
- python: 3.11.2
- ssh-python: 1.0.0
- ssh2-python: 1.0.0
- parallel-ssh: 2.12.0
- BIG-IP: 15.1.8.1
- MIS
Nimbostratus
Hello,
I've tried mimicking the code shared here, but it returns a similar error
pssh.exceptions.AuthenticationError: ('Authentication error while connecting to %s:%s - %s - retries %s/%s', '<IP_address>', 22, AuthenticationError(), 3, 3
A difference I noticed is that my user, when connected through SSH, gets placed in TMSH instead of BASH.
I've tried
from pssh.clients import ParallelSSHClient hosts = ['<IP_address1>', '<IP_address2>'] client = ParallelSSHClient(hosts, user='<MyUser>',password='<MyPassword>') cmd = 'show sys clock' output = client.run_command(cmd) for host_out in output: for line in host_out.stdout: print(line)and
from pssh.clients import SSHClient host = '<IP_address>' s = SSHClient(host, user='<MyUser>', password='<MyPassword>') cmd='show system clock' res = s.run_command(cmd) print(res) for line in res.stdout: print(line)Thanks in advance. All help will be appreciated.
My versions
- WSL, Ubuntu 22.04.4 LTS
- Python 3.10.12
- parallel-ssh 2.12.0
- ssh-python 1.0.0
- ssh2-python 1.0.0
- BIG-IP 15.1.10.3
- JRahm
Admin
I'm not able to get ssh2-python installed on either my intel or apple silicon mac currently, erroring out. Might be a little while before I can troubleshoot. I'm guessing since you're in the tmsh shell that this won't work as advertised.
- MIS
Nimbostratus
JRahm,
Thanks for your prompt response.
In my uneducated and unexperienced state, I was hoping it would work. In the end, it's just a command in the terminal, I thought.
If it's within my capabilities, I'll be glad to try anything you can suggest.
I'll see if I can make my user fall into BASH instead of TMSH when SSHing to the F5s.
Regards,
Help guide the future of your DevCentral Community!
What tools do you use to collaborate? (1min - anonymous)Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
