diff options
author | Greg Lutostanski <greg.lutostanski@calxeda.com> | 2013-09-26 12:31:22 -0500 |
---|---|---|
committer | Greg Lutostanski <greg.lutostanski@calxeda.com> | 2013-09-26 12:31:22 -0500 |
commit | eee4cd77c9709b1de4fe447f398d10593e4ba30c (patch) | |
tree | d2b7ca106624f373cc057e0b497a34e1df636767 | |
parent | a80f121ee4ca3f94d45714381fb3032bbf5835bf (diff) | |
download | cxmanage-eee4cd77c9709b1de4fe447f398d10593e4ba30c.tar.gz |
CXMAN-230: adding a tmux cxmanage session muxer
This will hopefully replace sol_tabs eventually
-rwxr-xr-x | scripts/cxmux | 51 |
1 files changed, 51 insertions, 0 deletions
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()) |