03-06-2024 09:17 PM
Hi everyone,
I am trying to create a script to remove unwanted users/usernames in our network equipments. I am currently using netmiko 4.2.0 and python 3.7.9. I am already connected via SSH but can't seem to push the commands through. Here is my code below and the output after running the script. If you guys have any suggestion please big thanks!
usernames_to_remove = ["username1", "username1"]
try:
# Connect to the device
print(f"Connecting to {device_ip}")
ssh_client = ConnectHandler(**device)
# Display current usernames before configuration
print(f"Current usernames on {device_ip} (before configuration):")
current_usernames_before = ssh_client.send_command("show running-config | include username")
print(current_usernames_before)
# Remove usernames
for username in usernames_to_remove:
config_command = f"no username {username}"
output = ssh_client.send_command_(config_command)
# Save the configuration
output += ssh_client.send_command_timing("wr memory")
print(f"Configuration applied successfully on {device_ip}")
print(output)
# Display current usernames after configuration
print(f"Current usernames on {device_ip} (after configuration):")
current_usernames_after = ssh_client.send_command("show running-config | include username")
print(current_usernames_after)
# Disconnect from the device
ssh_client.disconnect()
== OUTPUT AFTER RUNNING THE SCRIPT ==
Connecting to 172.16.222.12
Current usernames on 172.16.222.12 (before configuration):
username adminuser privilege 15 secret 9 $9$//hb7V8B9eiLHw$fQxcjZ3WEXVT3ResZBUC/b.Lg3ruiKlz3bMs3BF
username username1 privilege 15 secret 9 $9$XyNW80Yyvb9EOg$oEdPdvXcibt6aWD3cXPqa1fRd0EbjFrfDc5n9OP
username username2 privilege 15 secret 9 $9$KNohPABLAwt8ur$EIg02hp5opnHRPDRzImbxoUpVQhP93XzA9XGAX1
Configuration applied successfully on 172.16.222.12
n
OLD-D_GF-ASW1(config)#o username mark
^
% Invalid input detected at '^' marker.
end
OLD-D_GF-ASW1#Building configuration...
[OK]
Current usernames on 172.16.222.12 (after configuration):
username adminuser privilege 15 secret 9 $9$//hb7V8B9eiLHw$fQxcjZ3WEXVT3ResZBUC/b.Lg3ruiKlz3bMs3BF
username username1 privilege 15 secret 9 $9$XyNW80Yyvb9EOg$oEdPdvXcibt6aWD3cXPqa1fRd0EbjFrfDc5n9OP
username username2 privilege 15 secret 9 $9$KNohPABLAwt8ur$EIg02hp5opnHRPDRzImbxoUpVQhP93XzA9XGAX1
Script execution complete.
03-06-2024 10:19 PM - edited 03-06-2024 10:41 PM
I am not quite sure how your script produces that output, but there seems to be an extra "_" symbol in "ssh_client.send_command_(config_command)" that could be causing an issue. I would recommend using "send_config_set" instead of "send_command" to alter device configuration with Netmiko. You can read more about this here: https://pyneng.readthedocs.io/en/latest/book/18_ssh_telnet/netmiko.html
I would rewrite the # Remove usernames block like so:
config_list = []
for username in usernames_to_remove:
command = f"no username {username}"
config_list.append(command)
output = ssh_client.send_config_set(config_list)
# Or the more concise version with list comprehension
config_list = [ f"no username {username}" for username in usernames_to_remove ]
output = ssh_client.send_config_set(config_list)
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide