Upgrade to 1.5.2, tooling for VPN API requests
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user