3 weeks ago
I am trying to get used to scripting but have not found anything that does what i want.
I want to send CLI commands to groups but have the %deviceIP built in to the script so it make changes as i need.
For example i was to enable SFLOW so i need to have the local IP in this config.
config terminal
sflow agent-ip %deviceIP
sflow collector 1 address x.x.x.x owner DEV-SiteEngine port 6343 timeout 497
sflow collector 2 address x.x.x.x owner PRD-SiteEngine port 6343 timeout 497
app-telemetry enable
I was also trying to see if there is anyway to do pip install commands to get more features in the scripts.
3 weeks ago
I've been trying to troubleshoot by adding regex as well but all i ever get is the same export from site engine.
Script Name: TEST-Gather-MGMT-Push-SFLOW
Date and Time: 2024-06-07T15:09:36.638
XIQ-SE User: root
XIQ-SE User Domain:
IP: 172.16.7.62
import re
from xmclib import emc_vars
from xmclib import cli
def configure_device():
device_ip = emc_vars["deviceIP"]
device_login = emc_vars["deviceLogin"]
device_pwd = emc_vars["devicePwd"]
cli_port = emc_vars.get("cliPort", 22) # Default to SSH port 22 if not specified
# Define the CLI commands
cli_commands = [
"conf t",
"sflow agent-ip {}".format(device_ip),
"sflow collector 1 address 172.16.52.46 owner DEV-SiteEngine port 6343 timeout 497",
"sflow collector 2 address 10.252.52.23 owner adcprdsiteengine01 port 6343 timeout 497",
"app-telemetry enable",
"exit", # Add 'exit' to commit changes if necessary
"save config" # Add 'save config' to ensure configuration is saved
]
try:
print("Connecting to device {}...".format(device_ip))
# Initialize the connection
session = cli.CliCommand(device_ip, user=device_login, password=device_pwd, port=cli_port)
# Execute each command individually and capture the output
for command in cli_commands:
print("Running command: {}".format(command))
result = session.execute(command)
if result:
print("Command output: {}".format(result))
print("Successfully executed command on device {}: {}".format(device_ip, command))
else:
print("Failed to execute command on device {}: {}".format(device_ip, command))
return
# Example of capturing and parsing the output for verification
verification_command = "show sflow configuration" # Replace with an appropriate verification command
print("Running verification command: {}".format(verification_command))
verification_result = session.execute(verification_command)
if verification_result:
print("Verification command output: {}".format(verification_result))
# Parse the output using regex
regex = re.compile(r"sflow agent-ip (\d+\.\d+\.\d+\.\d+)")
for line in verification_result.splitlines():
match = regex.search(line)
if match:
agent_ip = match.group(1)
print("Parsed sflow agent IP: {}".format(agent_ip))
else:
print("Failed to execute verification command on device {}".format(device_ip))
except Exception as ex:
print("Exception occurred while configuring device {}: {}".format(device_ip, str(ex)))
if __name__ == "__main__":
configure_device()
3 weeks ago
not sure where you got the inspiration for this Python script. If you are using Python inside Site Engine, the CLI handling is much simpler.