This might be bad practice so forgive me, but when python ends on non telnet lib exception or a non paramiko (SSH) exception, will the SSH or Telnet connection automatically close? Also, will sys.exit() close all connections that the script is using?
Yes, the system (Linux and Windows) keeps track of all of the resources your process uses. It can be files, mutexes, sockets, anything else. When process dies, all of the resources are freed. It doesn't really matter which programming language do you use and how you terminate your application.
There are several subtle exceptions for this rule like WAIT_CLOSE state for server sockets or resources held by zombie processes, but in general you can assume that whenever your process is terminated, all of the resources are freed.
UPD. As it was mentioned in comments, OS cannot guarantee that the resources were freed properly. In network connections case it means that there are no guarantee that the FIN packet was sent, so although everything was cleaned up on your machine, the remote endpoint can still wait for data from you. Theoretically, it can wait infinitely long. So it is always better practice to use "finally" statement to notify the other endpoint about closing connection.
Does python automatically close SSH and Telnet