You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

23 lines
972 B

7 years ago
  1. import subprocess
  2. import argparse
  3. import configparser
  4. cp = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())
  5. cp.read('hostnames.ini')
  6. if __name__ == "__main__":
  7. parser = argparse.ArgumentParser()
  8. group = parser.add_mutually_exclusive_group(required=True)
  9. group.add_argument('-o','--wan',action = 'store_true')
  10. group.add_argument('-l','--lan',action = 'store_true')
  11. parser.add_argument('-p','--pre-script', help= 'script to run before connecting(in config dir)')
  12. parser.add_argument('name',help='name of config file to use (sans .cfg)')
  13. parser.add_argument('arg',nargs = '*')
  14. args = parser.parse_args()
  15. if pre:
  16. pre = '~/.ssh/config/{}'.format(args.pre_script)
  17. subprocess.check_call(pre)
  18. if args.wan:
  19. host = cp['wan'][args.name]
  20. elif args.lan:
  21. host = cp['lan'][args.name]
  22. cmd = ['ssh','-F','~/.ssh/{}.cfg'.format(args.name),host] + args.arg
  23. subprocess.call(cmd)