Learn F5 Technologies, Get Answers & Share Community Solutions Join DevCentral

Filter by:
  • Solution
  • Technology
Clear all filters
Answers

python show running-config

I am trying to get a Python script to output the running config of my F5, to show everything from authentication to pools to ntp settings. With TMSH/SSH it's so easy doing 'show running-config' and then saving that output. Is there anything similar to this that I can do with the Python F5-SDK? I am trying to generate this in a cleaner fashion than 'show running-config' does it as I use this for PCI compliance evidence. Any help would be appreciated. To muddy the waters a bit I am EXTREMELY new to F5 products.

0
Rate this Question

Answers to this Question

placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER

I was able to get the running config to show with Python, please see the code below:

from f5.bigip import ManagementRoot
mgmt = ManagementRoot("your_f5_ip", 'username', 'password')
x = mgmt.tm.util.bash.exec_cmd('run', utilCmdArgs='-c "tmsh show running-config"')
print(x.commandResult)
0
placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER

tmsh show running-config is currently not supported in the iControl REST framework. You can call the /mgmt/tm/util/bash endpoint as a workaround. A curl example is shown below:

curl -sku <user>:<pass> https://<mgmtIP>/mgmt/tm/util/bash -X POST \
  -d '{"command":"run", "utilCmdArgs":"-c \"tmsh show running-config\""}'

The output from the tmsh command is shown in the commandResult field. All the lines are concatenated by translating LF (0x0A) to literal \n. In bash, you may pipe the output to something like this:

| python -m json.tool | grep commandResult | sed 's/\\n/\n/g'

Of course, you can do better using Python.

See also Native tmsh/bash commands via REST API.

0
placeholder+image
USER ACCEPTED ANSWER & F5 ACCEPTED ANSWER

It aint pretty , but it should do the trick, one possible improvment would be implementing list with all commands you need and for loop

    import paramiko,time

device_1 = '172.16.1.53'
devices = [device_1]
username = 'cisco'
password = 'cisco'

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())


for device in devices:
    ssh.connect(device, username=username, password=password,allow_agent=False,look_for_keys=False)
    file_template = 'output.{}.txt'.format(device)
    with open(file_template, 'wb') as file_handler:
        channel = ssh.invoke_shell()
        channel.send('term length 0\n')
        time.sleep(2)
        out = channel.recv(9999)
        channel.send('show running-config\n')
        time.sleep(15)
        out = channel.recv(9999)
        file_handler.write(out)
        file_handler.close()
    ssh.close()
0
Comments on this Answer
Comment made 3 months ago by Malware Mike 121

I was curious how I could run commands without the F5-sdk, thanks for the share, Ill be using paramiko at some point in the future!

0
Comment made 3 months ago by Karol Biernacki 1

If you want to do bunch of "show's" on your F5 devices this will do the trick,sadly new library netmiko (from Kirk Byers) doesnt provide much methods for F5 , but if you would like to do some configuration based on templates i strongly suggest using terraform from Hashicorp (LTM) https://www.hashicorp.com/blog/new-terraform-providers-f5-nutanix-tencent-helm.

1