Upgrade to 1.5.2, tooling for VPN API requests

This commit is contained in:
Quentin WEPHRE
2024-07-19 08:59:28 +02:00
parent 5819418f7c
commit 1a383c5302
25 changed files with 2026 additions and 1835 deletions

View File

@@ -1,87 +1,87 @@
import paramiko
import pandas as pd
import getpass
import re
import time
import json
def read_excel(filename, column_name):
df = pd.read_excel(filename)
df = df[df["device_name"].notnull()]
global names
global ips
global connections
names = df["device_name"].tolist()
ips = df["device_ip_address_http"].tolist()
connections = df["connection_string"].tolist()
return ips
def ssh_execute_commands(device_ip, username, password, commands, connection):
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(device_ip, username=username, password=password)
transport = ssh_client.get_transport()
session = transport.open_session()
session.set_combine_stderr(True)
session.get_pty()
session.exec_command("sudo cat /var/thingspro/data/mx-api-token")
stdin = session.makefile('wb', -1)
stdout = session.makefile('rb', -1)
stdin.write(password + '\n')
stdin.flush()
for line in stdout.read().splitlines():
if not re.search('[Pp]assword', line.decode()):
token = line.decode()
# session = transport.open_session()
# session.set_combine_stderr(True)
# session.get_pty()
# session.exec_command('curl -k -X PUT https://127.0.0.1:8443/api/v1/azure-iotedge/reset -H "Content-Type: application/json" -H "mx-api-token: ' + token + '"')
# stdout = session.makefile('rb', -1)
# for line in stdout.read().splitlines():
# print(line.decode())
print("\n" + connection + "\n")
print(token + "\n")
jq_data = {}
jq_data_2 = {}
jq_data_2["source"] = "manual"
jq_data_2["connectionString"] = connection
jq_data_2["enable"] = True
jq_data["provisioning"] = jq_data_2
json_object = json.dumps(jq_data)
print(json_object + "\n")
session = transport.open_session()
session.set_combine_stderr(True)
session.get_pty()
# -H "Content-Type: application/json" -H "mx-api-token:$(token)'
session.exec_command('curl -k -X PATCH https://127.0.0.1:8443/api/v1/azure-iotedge -H "Content-Type: application/json" -H "mx-api-token: ' + token + '" -d "' + str(json_object) + '"')
stdout = session.makefile('rb', -1)
for line in stdout.read().splitlines():
print(line.decode())
def main():
filename = ""
if filename == "":
print("Provide Excel file path before running the script!")
exit(11)
column_name = "device_ip_address_http"
global names
global ips
global connections
devices = read_excel(filename, column_name)
username = input("Enter SSH username: ")
password = input("Enter SSH password: ")
print(names)
commands = ["sudo bash"] # Add your commands here
for i, device in enumerate(names):
print(f"Connecting to gateway #{i} {device} ({ips[i]})...")
ssh_execute_commands(ips[i], username, password, commands, connections[i])
if __name__ == "__main__":
names = []
ips = []
main()
import paramiko
import pandas as pd
import getpass
import re
import time
import json
def read_excel(filename, column_name):
df = pd.read_excel(filename)
df = df[df["device_name"].notnull()]
global names
global ips
global connections
names = df["device_name"].tolist()
ips = df["device_ip_address_http"].tolist()
connections = df["connection_string"].tolist()
return ips
def ssh_execute_commands(device_ip, username, password, commands, connection):
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(device_ip, username=username, password=password)
transport = ssh_client.get_transport()
session = transport.open_session()
session.set_combine_stderr(True)
session.get_pty()
session.exec_command("sudo cat /var/thingspro/data/mx-api-token")
stdin = session.makefile('wb', -1)
stdout = session.makefile('rb', -1)
stdin.write(password + '\n')
stdin.flush()
for line in stdout.read().splitlines():
if not re.search('[Pp]assword', line.decode()):
token = line.decode()
# session = transport.open_session()
# session.set_combine_stderr(True)
# session.get_pty()
# session.exec_command('curl -k -X PUT https://127.0.0.1:8443/api/v1/azure-iotedge/reset -H "Content-Type: application/json" -H "mx-api-token: ' + token + '"')
# stdout = session.makefile('rb', -1)
# for line in stdout.read().splitlines():
# print(line.decode())
print("\n" + connection + "\n")
print(token + "\n")
jq_data = {}
jq_data_2 = {}
jq_data_2["source"] = "manual"
jq_data_2["connectionString"] = connection
jq_data_2["enable"] = True
jq_data["provisioning"] = jq_data_2
json_object = json.dumps(jq_data)
print(json_object + "\n")
session = transport.open_session()
session.set_combine_stderr(True)
session.get_pty()
# -H "Content-Type: application/json" -H "mx-api-token:$(token)'
session.exec_command('curl -k -X PATCH https://127.0.0.1:8443/api/v1/azure-iotedge -H "Content-Type: application/json" -H "mx-api-token: ' + token + '" -d "' + str(json_object) + '"')
stdout = session.makefile('rb', -1)
for line in stdout.read().splitlines():
print(line.decode())
def main():
filename = ""
if filename == "":
print("Provide Excel file path before running the script!")
exit(11)
column_name = "device_ip_address_http"
global names
global ips
global connections
devices = read_excel(filename, column_name)
username = input("Enter SSH username: ")
password = input("Enter SSH password: ")
print(names)
commands = ["sudo bash"] # Add your commands here
for i, device in enumerate(names):
print(f"Connecting to gateway #{i} {device} ({ips[i]})...")
ssh_execute_commands(ips[i], username, password, commands, connections[i])
if __name__ == "__main__":
names = []
ips = []
main()