Guest User

Untitled

a guest
Jul 15th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import optparse, sys,os
  3. from confObject import ConfigFile, RunCon
  4. import paramiko
  5. #Main server configuration file
  6. MASTER_CONF = 'server.conf'
  7.  
  8. #Main product file
  9. MASTER_PRODUCT = 'product.conf'
  10.  
  11. #tmp file
  12. TEMP_CONF = "tmp.conf"
  13.  
  14. def parse_opts():
  15. parser = optparse.OptionParser("Usage: %prog [options] arg1 arg2")
  16.  
  17. #Options to create a new server.conf entry
  18. parser.add_option('-S','--server', dest='server', default=None, type='string',
  19. help='Add a server name config file')
  20. parser.add_option('-I','--address', dest='ip', default=None, type='string',
  21. help='IP address for new server')
  22. parser.add_option('-F','--forum_root',dest='root', default=None, type='string',
  23. help='Forum root to install product')
  24. parser.add_option('-N','--name', dest='name', default=None, type='string',
  25. help='Name of added entry')
  26.  
  27. #Options to create a new product.conf entry
  28. parser.add_option('-P','--product', dest='product', default=None, type='string',
  29. help='Name of Product to install')
  30. parser.add_option('-U','--upload_root', dest='upload_root', default=None, type='string',
  31. help='The upload root on the local files system (must be readable)')
  32. parser.add_option('-R', '--run', dest='run', default=None, type='string',
  33. help='Run Console')
  34.  
  35. (options, args) = parser.parse_args()
  36.  
  37. if options.run:
  38. con = RunCon()
  39. server = con.get_args(MASTER_CONF)
  40. product = con.get_args(MASTER_PRODUCT)
  41. ip = server['ip']
  42. forum = server['forum_root'].strip()
  43. upload_root = product['upload_root'].strip()
  44. username = raw_input('Username: > ').strip()
  45. password = raw_input('Password: > ').strip()
  46. copyOver(upload_root, forum,username,ip, password)
  47. print forum
  48. print upload_root
  49. #make sure that only one action is taken
  50. if options.server and options.product:
  51. print 'error', sys.argv[0], ': Only can add one --product or --server entry at a time'
  52. sys.exit(-1)
  53. if options.server:
  54. if options.ip and options.root:
  55. try:
  56. d = { 'ip' : options.ip, 'forum_root' : options.root }
  57. newconfig = ConfigFile(MASTER_CONF,TEMP_CONF)
  58. newconfig.createEntry(options.server,d)
  59. newconfig.append_config()
  60. except:
  61. print "someting fucked"
  62. else:
  63. print 'Error:sys.argv[0]:'
  64. if options.product:
  65. if options.upload_root:
  66. try:
  67. d = { 'upload_root' : options.upload_root, 'product' : options.product}
  68. newconfig = ConfigFile(MASTER_PRODUCT,TEMP_CONF)
  69. newconfig.createEntry(options.product,d)
  70. newconfig.append_config()
  71. except:
  72. "oppts"
  73. else:
  74. print "error:", sys.argv[0],"Must provide upload root when adding product"
  75.  
  76. master.close()
  77.  
  78. def copyOver(mainDir, remoteDir, user, ip, password):
  79. if mainDir[len(mainDir)-1] != '/':
  80. mainDir += '/'
  81. file_list = os.listdir(mainDir)
  82. for f in file_list:
  83. res = f.find('.php')
  84. if res != -1:
  85. file_path = mainDir + f
  86. remote_path = remoteDir + "/" + f
  87. print 'trying to copy ', file_path, 'to', remote_path
  88. try:
  89. ssh = paramiko.SSHClient()
  90. ssh.set_missing_host_key_policy(
  91. paramiko.AutoAddPolicy())
  92.  
  93. ssh.connect(ip,username=user.strip(),
  94. password=password.strip())
  95. ftp = ssh.open_sftp()
  96. ftp.put(file_path,remote_path)
  97. ftp.close()
  98. except:
  99. print "*ERROR*: file access isues dirctory not there etc..."
  100. continue
  101. elif os.path.isdir(mainDir + f):
  102. copyOver(mainDir + f, remoteDir + "/" + f, user,ip,password)
  103.  
  104.  
  105.  
  106. if __name__ == '__main__':
  107. parse_opts()
Add Comment
Please, Sign In to add comment