commit
						babb5a5366
					
				
					 1 changed files with 27 additions and 26 deletions
				
			
		
							
								
								
									
										53
									
								
								crussh.py
									
										
									
									
									
								
							
							
						
						
									
										53
									
								
								crussh.py
									
										
									
									
									
								
							| 
						 | 
					@ -7,8 +7,6 @@
 | 
				
			||||||
# Requires: python-gtk2 python-vte
 | 
					# Requires: python-gtk2 python-vte
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import argparse
 | 
					 | 
				
			||||||
import getpass
 | 
					 | 
				
			||||||
import math
 | 
					import math
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
	import gtk
 | 
						import gtk
 | 
				
			||||||
| 
						 | 
					@ -22,19 +20,6 @@ except:
 | 
				
			||||||
	error.run()
 | 
						error.run()
 | 
				
			||||||
	sys.exit(1)
 | 
						sys.exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Parse CLI Args ###
 | 
					 | 
				
			||||||
parser = argparse.ArgumentParser(description="Connect to multiple servers in parallel.")
 | 
					 | 
				
			||||||
parser.add_argument('hosts', metavar='HOST', nargs='+',
 | 
					 | 
				
			||||||
	help="Host(s) to connect to.")
 | 
					 | 
				
			||||||
parser.add_argument('-l', '--login', dest='login', default=None,
 | 
					 | 
				
			||||||
	help="Login name to use.")
 | 
					 | 
				
			||||||
parser.add_argument('-p', '--port', dest='port', type=int, default=None,
 | 
					 | 
				
			||||||
	help="Alternate SSH port to use.")
 | 
					 | 
				
			||||||
parser.add_argument('-s', '--fontsize', dest='fontsize', type=int, default=10,
 | 
					 | 
				
			||||||
	help="Font size to use. (default=10)")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
args = parser.parse_args()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
### CruSSH! ###
 | 
					### CruSSH! ###
 | 
				
			||||||
class CruSSH:
 | 
					class CruSSH:
 | 
				
			||||||
	### Config Vars ###
 | 
						### Config Vars ###
 | 
				
			||||||
| 
						 | 
					@ -138,10 +123,7 @@ class CruSSH:
 | 
				
			||||||
		# give EntryBox default focus on init
 | 
							# give EntryBox default focus on init
 | 
				
			||||||
		self.EntryBox.props.has_focus = True
 | 
							self.EntryBox.props.has_focus = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def __init__(self, hosts, login=None, port=None):
 | 
						def __init__(self, hosts, ssh_args=None):
 | 
				
			||||||
		self.Config["login"] = login
 | 
					 | 
				
			||||||
		self.Config["port"] = port
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		# init all terminals
 | 
							# init all terminals
 | 
				
			||||||
		for host in hosts:
 | 
							for host in hosts:
 | 
				
			||||||
			terminal = vte.Terminal()
 | 
								terminal = vte.Terminal()
 | 
				
			||||||
| 
						 | 
					@ -152,10 +134,8 @@ class CruSSH:
 | 
				
			||||||
			# TODO: disable only this terminal widget on child exit
 | 
								# TODO: disable only this terminal widget on child exit
 | 
				
			||||||
			# v.connect("child-exited", lambda term: gtk.main_quit())
 | 
								# v.connect("child-exited", lambda term: gtk.main_quit())
 | 
				
			||||||
			cmd_str = "/usr/bin/ssh"
 | 
								cmd_str = "/usr/bin/ssh"
 | 
				
			||||||
			if self.Config["login"] != None:
 | 
								if ssh_args is not None:
 | 
				
			||||||
				cmd_str += " -l " + args.login
 | 
									cmd_str += " " + ssh_args
 | 
				
			||||||
			if self.Config["port"] != None:
 | 
					 | 
				
			||||||
				cmd_str += " -p " + str(args.port)
 | 
					 | 
				
			||||||
			cmd_str += " " + host
 | 
								cmd_str += " " + host
 | 
				
			||||||
			cmd = cmd_str.split(' ')
 | 
								cmd = cmd_str.split(' ')
 | 
				
			||||||
			terminal.fork_command(command=cmd[0], argv=cmd)
 | 
								terminal.fork_command(command=cmd[0], argv=cmd)
 | 
				
			||||||
| 
						 | 
					@ -167,6 +147,27 @@ class CruSSH:
 | 
				
			||||||
		self.initGUI()
 | 
							self.initGUI()
 | 
				
			||||||
		self.reflow(force=True)
 | 
							self.reflow(force=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Start Execution ###
 | 
					if __name__ == "__main__":
 | 
				
			||||||
crussh = CruSSH(args.hosts, args.login, args.port)
 | 
						import argparse
 | 
				
			||||||
gtk.main()
 | 
					
 | 
				
			||||||
 | 
						### Parse CLI Args ###
 | 
				
			||||||
 | 
						parser = argparse.ArgumentParser(description="Connect to multiple servers in parallel.", usage="%(prog)s [OPTIONS] HOST [HOST ...]")
 | 
				
			||||||
 | 
						parser.add_argument('-s', '--fontsize', dest='fontsize', type=int, default=10,
 | 
				
			||||||
 | 
						help="Font size to use. (default=10)")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						(args, hosts) = parser.parse_known_args()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if len(hosts) == 0:
 | 
				
			||||||
 | 
							parser.print_usage()
 | 
				
			||||||
 | 
							sys.exit(1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if "--" in hosts:
 | 
				
			||||||
 | 
							offset = hosts.index("--") + 1
 | 
				
			||||||
 | 
							ssh_args = " ".join(hosts[0:offset])
 | 
				
			||||||
 | 
							hosts = hosts[offset:]
 | 
				
			||||||
 | 
						else:
 | 
				
			||||||
 | 
							ssh_args = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						### Start Execution ###
 | 
				
			||||||
 | 
						crussh = CruSSH(hosts, ssh_args)
 | 
				
			||||||
 | 
						gtk.main()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue