From eee4cd77c9709b1de4fe447f398d10593e4ba30c Mon Sep 17 00:00:00 2001 From: Greg Lutostanski Date: Thu, 26 Sep 2013 12:31:22 -0500 Subject: CXMAN-230: adding a tmux cxmanage session muxer This will hopefully replace sol_tabs eventually --- scripts/cxmux | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 scripts/cxmux diff --git a/scripts/cxmux b/scripts/cxmux new file mode 100755 index 0000000..17150c2 --- /dev/null +++ b/scripts/cxmux @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +import os +import sys +import cxmanage_api.fabric +from optparse import OptionParser + +def main(): + parser = OptionParser("usage: %prog [options] COMMAND ecmeIP", conflict_handler="resolve") + parser.add_option("-s", "--ssh", + action="store_const", const=True, dest="ssh", default=False, + help="Use the SPU IPs rather than ECME IPs") + parser.add_option("-n", "--nosync", + action="store_const", const=False, dest="sync", default=True, + help="Do not syncronize input across terminals") + parser.disable_interspersed_args() + (options, args) = parser.parse_args() + if len(args) == 0: + parser.print_help() + return -1 + elif len(args) < 2: + parser.error("Need to specify COMMAND and ecmeIP") + + command = " ".join(args[:-1]) + ecmeip = args[-1] + name = '%s@%s' % (args[0], ecmeip) + fabric = cxmanage_api.fabric.Fabric(ecmeip) + ips = [node.ip_address for node in fabric.nodes.values()] + if options.ssh: + ips = fabric.get_server_ip().values() + + for i, ip in enumerate(ips): + if i == 0: + os.system('tmux new-window -n "%s"' % name) + os.system('tmux send-keys -l "%s %s"' % (command, ip)) + os.system('tmux send-keys Enter') + continue + + os.system('tmux split-window -h') + os.system('tmux send-keys -l "%s %s"' % (command, ip)) + os.system('tmux send-keys Enter') + os.system('tmux select-layout -t "%s" even-horizontal >/dev/null' % name) + + os.system('tmux select-layout -t "%s" tiled >/dev/null' % name) + if options.sync: + os.system('tmux set-window-option -t "%s" synchronize-panes on >/dev/null' % name) + + return 0 + +if __name__ == '__main__': + sys.exit(main()) -- cgit v1.2.1