aboutsummaryrefslogtreecommitdiffstats
path: root/sshmgr.py
blob: 497df064f38aa08876a7d8f0ba8798b4200766b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/env python3
from getch import *
from os import system

CONN_DB_PATH = "sshmgr-db"

def load_conns():
	conns = []
	with open(CONN_DB_PATH) as f:
		conns = [l.strip() for l in f.readlines()]
	return conns

def create_new(conns):
	name = input("Name the new connection: ")
	conns.append(name)

	save_conns(conns)

def save_conns(conns):
	with open(CONN_DB_PATH, 'w') as f:
		for conn in conns:
			f.write("{:s}\n".format(conn))

def get_connection(conns, c):
	try:
		num = int(c)
	except ValueError:
		print("Selection needs to be a number!")
		return False

	if num < 1 or num > len(conns):
		print("Selection not in range!")
		return False
	
	selection = conns[num - 1]
	return selection

def connect(connection):
	system("screen ssh {}".format(connection))
	
def delete_conn(conns):
	c = input("Which connection should be removed? ")
	deleted = get_connection(conns, c)
	if not deleted:
		print("Nothing was deleted.")
		getch()
		return

	conns = [conn for conn in conns if conn != deleted]
	save_conns(conns)	

def main():
	running = True
	while running:
		conns = load_conns()
		system("clear")

		print("Select connection: ")
		for i,conn in enumerate(conns):
			print("({:d}) {:s}".format(i + 1, conn))
		print("(n) New connection")
		print("(d) Delete connection")
		print("(q) Quit")

		c = getch()

		if (c == "q"):
			return
		elif (c == "d"):
			delete_conn(conns)
		elif (c == "n"):
			create_new(conns)
		else:
			connection = get_connection(conns, c)
			if not connection:
				print("Select a valid connection.")
				getch()
			else:
				connect(connection)
				return

if __name__ == "__main__":
	main()