Advertisement
Guest User

Untitled

a guest
Jul 24th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. #!/opt/imh-python/bin/python2.7
  2. '''User migrate'''
  3.  
  4. import os
  5. import argparse
  6. import string
  7. import time
  8. import requests
  9. import paramiko
  10. __version__ = '0.1'
  11. __author__ = 'Riley'
  12.  
  13.  
  14. def main():
  15. print __version__
  16. '''
  17. Entry function with arguments
  18. '''
  19. parser = argparse.ArgumentParser(description = 'A simple tool to manipulate' +
  20. 'cPanel users'
  21. )
  22. parser.add_argument('--user',
  23. help='Specify a user to manipulate',
  24. dest='user',
  25. required=True
  26. )
  27. parser.add_argument('--domain',
  28. help='Copy,duplicate,or move a users domain',
  29. dest='domain',
  30. )
  31. parser.add_argument('--db',
  32. help ='Dump a users databases to ' +
  33. 'the users home directory',
  34. dest='db',
  35. )
  36. parser.add_argument('--pass',
  37. '-p',
  38. help='Specify a passowrd for rsync,or other*',
  39. dest='password')
  40. parser.add_argument('--rsync',
  41. help='Rsync files to another ' +
  42. 'vps/dedicated. See --rhelp for details'
  43. )
  44. parser.add_argument('--dbdump',
  45. help='Dump any database'
  46. )
  47. parser.add_argument('--restoredb',
  48. help='Restore all databases from ' +
  49. ' /home/dump'
  50. )
  51. parser.add_argument('--remote',
  52. help='Check server status ' +
  53. 'of a remote server'
  54. )
  55. parser.add_argument('--test', help='Test a move with ' +
  56. 'Lynx browser'
  57. )
  58.  
  59. raw = parser.parse_known_args()
  60. parser.args = raw[0]
  61.  
  62. # rsync function Uses paramiko SFTP.
  63. def rsync(args):
  64. host = parser.host
  65. if not parser.host:
  66. parser.host = raw_input("Please enter a remote server: ")
  67. maninput = True
  68. user = parser.user
  69. if not parser.user:
  70. parser.user = raw_input("Please enter the user you will be migrating: ")
  71. maninput = True
  72. port = parser.port
  73. if not parser.port:
  74. parser.port = raw_input("Specify the SSH port: ")
  75. maninput = True
  76. password = parser.password
  77. if not parser.password:
  78. parser.password = raw_input("Enter the remote password")
  79. maninput = True
  80. # TODO: handle transferring of files better,make sure paramiko sftp allows me to set everything from parser.*
  81. username = parser.user
  82. password = parser.password
  83. port = parser.port
  84. cpasync = paramiko.Transport((host, port))
  85. cpasync.connect(username = username, password = password)
  86. csftp = paramiko.SFTPClient.from_cpasync(cpasync)
  87. local_dir = '/home/cpmove-rileybae.tar.gz'
  88. remote_dir = '/home/cpmove-rileybae.tar.gz'
  89. csftp.put(local_dir, remote_dir)
  90. # dumping a database. May or may not make it handle this differently in a later update.
  91. def dbdump():
  92. print "Enter any database name"
  93. database = raw_input()
  94. timestamp = time.strftime('%Y-%m-%d') # Makes a timestamp so you can keep better track of when you dumped it
  95. os.popen("mysqldump -e --opt -c %s" % (database,database+"_"+timestamp)) # Running mysqldump with popen(sue me)
  96. print "\n Database dumped to "+database+"_"+timestamp
  97.  
  98.  
  99. if __name__ == '__main__':
  100. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement