{ "info": { "author": "wuwentao", "author_email": "wuwentao@patsnap.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "Jumpserver Sync Tool\n====================\n\n# \u7b80\u4ecb\n\nJumpserver \u662f\u5f00\u6e90\u7684\u591a\u4e91\u73af\u5883\u7684\u5821\u5792\u673a\uff0c\u53ef\u4ee5\u7528\u4e8e\u7ba1\u7406\u548c\u767b\u9646\u5404\u4e2a\u6765\u6e90\u7684\u5b9e\u4f8b\u3002\u4f46\u662f\u4f7f\u7528 Jumpserver \u5fc5\u987b\u624b\u52a8\u6dfb\u52a0\u5b9e\u4f8b\u5230\u7cfb\u7edf\uff0c\u5bf9\u4e8e\u7ecf\u5e38\u5f00\u5173\u7684\u96c6\u7fa4\u4e0d\u592a\u65b9\u4fbf\u3002\u6b64\u5de5\u5177\u7528\u4e8e\u5c06\u591a\u4e91\u5e73\u53f0\u7684\u5b9e\u4f8b\u5feb\u901f\u6dfb\u52a0\u5230 Jumpserver \u4e2d\uff0c\u5b9e\u73b0\u81ea\u52a8\u540c\u6b65\u591a\u4e91\u5e73\u53f0\u7684\u5b9e\u4f8b\u3002\n\n\u76ee\u524d\u652f\u6301\u7684\u4e91\u670d\u52a1\uff1a\n- AWS\n\n\u652f\u6301\u7684 Jumpserver \u7248\u672c\uff1a1.4.10+\n\n# \u5b89\u88c5\n\n```\npip install jumpserver-sync\n```\n\n# \u4f7f\u7528\n\n## \u914d\u7f6e\n\n\u521b\u5efa\u914d\u7f6e\u6587\u4ef6 `config.yml`\uff0c\u7c7b\u4f3c\u4e0b\u9762\n\n```\n# Jumpserver configuration\njumpserver:\n # Base url for Jumpserver, ex: http://demo.jumpserver.com\n base_url: \"\"\n # User name that has admin role\n user: \"\"\n # User password\n password: \"\"\n# Cache configuration\ncache:\n # Cache directory\n dir: .jumpserver_cache\n # Cache ttl time\n ttl: 60\n# Log configuration\nlog:\n # log level\n log_level: INFO\n# Profile configuration\nprofiles:\n # Profile settings, required type, for aws type, can configure profile_name, region_name, aws_access_key_id, aws_secret_access_key\n account1:\n type: aws\n region_name: cn-northwest-1\n profile_name: cn-northwest-1_account1\n# Tag selectors list\ntag_selectors:\n - tags:\n # Tags to match\n - key: tag_name\n value: tag_value\n # Attributes to set if match, variables {number}, {hostname}, {ip}, {public_ip}, {account}, {region} are available\n attrs:\n admin_user: admin_user\n domain: domain\n labels:\n - Key: region\n Value: {region}\n nodes:\n - node1\n# Listening configuration\nlistensing:\n # listening provider name\n test_sqs:\n # listening on AWS SQS\n type: sqs\n # Use this profile to receive message\n profile: account1\n # SQS URL\n queue: \"queue_url\"\n # max size to receive\n max_size: 1\n # specify system_users to push, comma separated\n push_system_users: \"\"\n```\n\n### Jumpserver \u670d\u52a1\u5668\u914d\u7f6e\n\n```\njumpserver:\n # Jumpserver \u7684\u670d\u52a1\u5668\u8def\u5f84, \u7c7b\u4f3c http://demo.jumpserver.com\n base_url: \"\"\n # \u7ba1\u7406\u5458\u7528\u6237\u540d\n user: \"\"\n # \u7ba1\u7406\u5458\u5bc6\u7801\n password: \"\"\n```\n\n### \u7f13\u5b58\u914d\u7f6e\n\n```\ncache:\n # \u7f13\u5b58\u76ee\u5f55\n dir: .jumpserver_cache\n # \u7f13\u5b58\u65f6\u95f4\uff08\u79d2\uff09\n ttl: 60\n```\n\n### \u65e5\u5fd7\u914d\u7f6e\n\n```\nlog:\n # \u65e5\u5fd7\u7ea7\u522b\n log_level: INFO\n # \u65e5\u5fd7\u683c\u5f0f\n log_formatter: \"[%(levelname)s] %(asctime)s : %(message)s\"\n```\n\n### \u4e91\u670d\u52a1\u8d26\u53f7\u914d\u7f6e\n\n```\nprofiles:\n # \u8d26\u6237\u540d\u79f0\n account1:\n # \u8d26\u6237\u7c7b\u578b\uff0c\u53ef\u9009\uff1a aws\n type: aws\n # \u4e91\u670d\u52a1\u914d\u7f6e\uff0c\u53d6\u51b3\u4e8e\u4f7f\u7528\u7684\u4e91\u670d\u52a1\u5546\uff0c\u4f7f\u7528 AWS \u53ef\u4ee5\u4f7f\u7528 profile_name, region_name, aws_access_key_id, aws_secret_access_key\uff0c\u5177\u4f53\u542b\u4e49\u53ef\u4ee5\u53c2\u8003 AWS \u5b98\u65b9\u6587\u6863\n region_name: cn-northwest-1\n # \u4f7f\u7528 profile_name \u9700\u8981\u914d\u7f6e access_key \u548c secret \u5728 aws \u7684 profile \u91cc\n profile_name: cn-northwest-1_account1\n```\n\n### \u6807\u7b7e\u9009\u62e9\u5668\u914d\u7f6e\n\n```\ntag_selectors:\n - tags:\n # \u9700\u8981\u5339\u914d\u7684\u6807\u7b7e\n - key: tag_name\n value: tag_value\n # \u5339\u914d\u6807\u7b7e\u540e\u9700\u8981\u8bbe\u7f6e\u7684\u5c5e\u6027, \u652f\u6301\u53d8\u91cf\u7684\u4f7f\u7528 {number}, {hostname}, {ip}, {public_ip}, {account}, {region}\n attrs:\n admin_user: admin_user\n domain: domain\n labels:\n - Key: region\n Value: {region}\n nodes:\n - node1\n```\n\n\u5728 `tag_selectors` \u4e2d\u53ef\u4ee5\u914d\u7f6e\u591a\u4e2a\u9009\u62e9\u5668\uff0c\u5bf9\u6bcf\u4e2a\u53d1\u73b0\u7684\u5b9e\u4f8b\u9010\u4e2a\u5339\u914d\uff0c\u5f53\u5339\u914d\u4e00\u4e2a\u9009\u62e9\u5668\u540e\uff0c\u5c31\u5e94\u7528\u9009\u62e9\u5668\u7684\u5c5e\u6027\u8bbe\u7f6e\u4fee\u6539\u5b9e\u4f8b\u7684\u5c5e\u6027\u503c\uff0c\u5e76\u6dfb\u52a0\u5230 Jumpserver \u4e2d\uff0c\u672a\u5339\u914d\u7684\u5b9e\u4f8b\u4e0d\u4f1a\u6dfb\u52a0\u3002\n\n\u5728 `tags` \u4e2d\u7684 `key` \u662f\u5b9e\u4f8b\u6807\u7b7e\u7684\u952e\uff0c`value` \u662f\u5b9e\u4f8b\u6807\u7b7e\u7684\u503c\uff0c\u652f\u6301\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u4f7f\u7528\u4e86 `re.match` \u6765\u5339\u914d\u3002\n\u4f8b\u5982\uff0c`key=Team value=t1` \u80fd\u5339\u914d `key=Team value=t1`, `key=Team value=t111` \u7b49\u5b9e\u4f8b\uff0c\u9700\u8981\u5b8c\u5168\u5339\u914d\u9700\u8981\u4f7f\u7528 `value=\"^t1$\"`\u3002 \n\n\u5728 `attrs` \u4e2d\u80fd\u8bbe\u7f6e\u66ff\u6362\u7684\u5c5e\u6027\uff0c\u652f\u6301\u5982\u4e0b\u53d8\u91cf\u66ff\u6362\n- {number}: \u5b9e\u4f8b ID\n- {hostname}\uff1a\u5b9e\u4f8b hostname\uff0chostname \u9ed8\u8ba4\u4ece\u5b9e\u4f8b\u7684 Name \u6807\u7b7e\u83b7\u53d6\u503c\n- {ip}: \u5b9e\u4f8b\u7684\u5185\u7f51 IP\n- {public_ip}: \u5b9e\u4f8b\u7684\u516c\u7f51 IP\n- {account}\uff1a\u5b9e\u4f8b\u7684\u4e91\u670d\u52a1\u8d26\u6237\u540d\u79f0\n- {region}\uff1a\u5b9e\u4f8b\u7684\u4e91\u670d\u52a1\u533a\u57df\n\n\u4e5f\u53ef\u4ee5\u4f7f\u7528\u5bf9\u5e94\u7684\u8d44\u6e90\u540d\u79f0\uff0c\u5982 `admin_user: admin_user` \u4f1a\u67e5\u627e `name=admin_user` \u7684\u7ba1\u7406\u7528\u6237\u3002\n\n\u6ce8\u610f\uff0c\u6240\u6709\u6307\u5b9a\u7684\u8d44\u6e90\uff08\u7ba1\u7406\u7528\u6237\uff0c\u7cfb\u7edf\u7528\u6237\uff0c\u7f51\u57df\uff0c\u6807\u7b7e\uff0c\u8d44\u6e90\u8282\u70b9\uff09\u5fc5\u987b\u4e8b\u5148\u521b\u5efa\u597d\uff0c\u5982\u679c\u4e0d\u5b58\u5728\u4f1a\u63d2\u5165\u5931\u8d25\u3002\n\n### \u76d1\u542c\u914d\u7f6e\n\n```\nlistensing:\n # \u76d1\u542c\u914d\u7f6e\u540d\u79f0\n test_sqs:\n # \u76d1\u542c\u7c7b\u578b\uff0c\u652f\u6301 sqs\n type: sqs\n # \u4f7f\u7528\u7684\u4e91\u8d26\u6237\u914d\u7f6e\u540d\u79f0\uff0c\u5173\u8054\u4e0a\u9762\u7684 profiles \u914d\u7f6e\u4e2d\u7684\u9879\n profile: account1\n # \u6307\u5b9a\u63a8\u9001\u7cfb\u7edf\u7528\u6237\u7684\u540d\u79f0\uff0c\u9ed8\u8ba4\u5168\u90e8\n push_system_users: \"\"\n # \u5bf9\u4e8e SQS \u7c7b\u578b\u7684\u914d\u7f6e\n # queue \u7684 URL\n queue: \"queue_url\"\n # \u6700\u5927\u63a5\u53d7\u6d88\u606f\u6570\u91cf\uff0c1 \uff5e 10\n max_size: 1\n```\n\n### \u5b9e\u4f8b\u6807\u7b7e\u914d\u7f6e\n\njumpserver-sync \u63d0\u4f9b\u4e86\u4e00\u4e9b\u5b9e\u4f8b\u529f\u80fd\u6807\u7b7e\uff0c\u8fd9\u4e9b\u6807\u7b7e\u5f71\u54cd\u5b9e\u4f8b\u80fd\u5426\u88ab\u6dfb\u52a0\u3002\n\n- Name: \u9700\u8981\u6dfb\u52a0\u7684\u5b9e\u4f8b\u5fc5\u987b\u6709 Name \u6807\u7b7e\uff0c\u8fd9\u4e2a\u6807\u7b7e\u7528\u6765\u751f\u6210\u5b9e\u4f8b\u7684 hostname\n- jumpserver_ignore\uff1a\u5f53\u5b9e\u4f8b\u6709`jumpserver_ignore`\u6807\u7b7e\uff0c\u4e14\u503c\u4e3a`true`\u65f6\uff0c\u5b9e\u4f8b\u4f1a\u88ab\u5ffd\u7565\n\n## \u540c\u6b65\u5b9e\u4f8b\n\n\u540c\u6b65\u4e91\u670d\u52a1\u8d26\u6237 account1 \u7684\u5b9e\u4f8b\u5230 Jumpserver\n```\njumpserver_sync sync -c config.yml -p account1\n```\n\n\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\u4e86 account1 \u7684\u8d26\u6237\uff0c\u4f7f\u7528\u524d\u9700\u8981\u914d\u7f6e\u5bf9\u5e94\u7684 AWS \u7684 key \u548c secret\n```\naws configure --profile cn-northwest-1_account1\n```\n\n\u6307\u5b9a\u7279\u5b9a\u7684\u5b9e\u4f8b ID\n```\njumpserver_sync sync -c config.yml -p account1 --instance-id i-08399a6b600f5e934\n```\n\n\u6dfb\u52a0\u5b9e\u4f8b\u540e\u6d4b\u8bd5\u8fde\u63a5\u6027\n```\njumpserver_sync sync -c config.yml -p account1 --test\n```\n\n\u6dfb\u52a0\u5b9e\u4f8b\u540e\u63a8\u9001\u7cfb\u7edf\u7528\u6237\n```\njumpserver_sync sync -c config.yml -p account1 --push\n```\n\n\u6307\u5b9a\u63a8\u9001\u7684\u7cfb\u7edf\u7528\u6237\u5e76\u68c0\u67e5\u662f\u5426\u63a8\u9001\u6210\u529f\n```\njumpserver_sync sync -c config.yml -p account1 --push-check --push-system-users=system_user_name\n```\n\n\u663e\u793a\u63a8\u9001\u548c\u6d4b\u8bd5\u7684\u4efb\u52a1\u65e5\u5fd7\n```\njumpserver_sync sync -c config.yml -p account1 --push-check --show-task-log\n```\n\n## \u6d4b\u8bd5\u5b9e\u4f8b\n\n\u6d4b\u8bd5\u5b9e\u4f8b\u8fde\u63a5\u6027\n```\njumpserver_sync check -c config.yml -p account1\n```\n\n\u6307\u5b9a\u5b9e\u4f8b ID\n```\njumpserver_sync check -c config.yml -p account1 -i i-08399a6b600f5e934\n```\n\n## \u79fb\u9664 Jumpserver \u4e2d\u7684\u5b9e\u4f8b\n\n\u79fb\u9664\u65e0\u6cd5\u8fde\u63a5\u7684\u5b9e\u4f8b\n```\njumpserver_sync clean -c config.yml\n```\n\n\u6307\u5b9a\u7279\u5b9a\u7684\u4e91\u8d26\u6237\n```\njumpserver_sync clean -c config.yml -p account1\n```\n\n\u6307\u5b9a\u5b9e\u4f8b ID\n```\njumpserver_sync clean -c config.yml -i i-08399a6b600f5e934\n```\n\n\u76f4\u63a5\u79fb\u9664\u5b9e\u4f8b\uff0c\u4e0d\u6d4b\u8bd5\n```\njumpserver_sync clean -c config.yml --all\n```\n\n## \u89e6\u53d1\u5f0f\u6dfb\u52a0\n\n\u6b64\u5de5\u5177\u53ef\u4ee5\u76d1\u542c\u7279\u5b9a\u7684\u961f\u5217\uff0c\u5f53\u961f\u5217\u4e2d\u6709\u6d88\u606f\u65f6\u81ea\u52a8\u6dfb\u52a0\u6216\u5220\u9664\u5b9e\u4f8b\u3002\n\n\u652f\u6301\u7684\u961f\u5217\uff1a\n- AWS SQS\n\n### \u76d1\u542c SQS\n\n\u521b\u5efa\u4e00\u4e2a SQS \u961f\u5217\uff0c\u5728\u914d\u7f6e\u6587\u4ef6\u7684 `listening` \u6bb5\u914d\u7f6e\u76d1\u542c\u4efb\u52a1\uff0c`tpye` \u6307\u5b9a `sqs`\uff0c`queue` \u5199\u4e0a SQS \u7684 URL\u3002\n\n```\njumpserver_sync listen -c config.yml -l test_sqs\n```\n\n\u6b64\u7a0b\u5e8f\u4f1a\u6301\u7eed\u76d1\u542c\u961f\u5217\uff0c\u6d88\u8d39\u4efb\u4f55\u53d1\u9001\u7684\u6d88\u606f\uff0c\u6211\u4eec\u5411\u961f\u5217\u53d1\u9001\u4e00\u6761\u5b9e\u4f8b ID \u7684\u6d88\u606f\uff0c\n\"i-08399a6b600f5e934\"\uff0c\u7a0b\u5e8f\u5c06\u4f1a\u68c0\u67e5\u5b9e\u4f8b\u662f\u5426\u5b58\u5728\uff0c\u5e76\u6dfb\u52a0\u5230 Jumpserver\u3002\n\n\u652f\u6301\u7684\u6d88\u606f\u683c\u5f0f:\n- i-08399a6b600f5e934\n- i-08399a6b600f5e934,i-08399a6b600f5e935\n- \"i-08399a6b600f5e934\"\n\n### \u4f7f\u7528 CloudWatch \u4e8b\u4ef6\u89c4\u5219\n\n\u6211\u4eec\u53ef\u4ee5\u914d\u7f6e CloudWatch \u4e8b\u4ef6\u89c4\u5219\uff0c\u5728\u5b9e\u4f8b\u542f\u52a8\u6216\u505c\u6b62\u65f6\u81ea\u52a8\u53d1\u9001\u6d88\u606f\u5230 SQS\uff0c\u7531\u7a0b\u5e8f\u6301\u7eed\u6d88\u8d39\u961f\u5217\u5e76\u589e\u51cf\u5b9e\u4f8b\u3002\n\n\u521b\u5efa\u4e8b\u4ef6\u89c4\u5219\n1. \u6253\u5f00 CloudWatch\uff0c\u5728\u5de6\u4fa7\u83dc\u5355\u9009\u62e9 `\u4e8b\u4ef6-\u89c4\u5219`\n2. \u5728 `\u4e8b\u4ef6\u6e90` \u4e2d\u9009\u62e9 `\u4e8b\u4ef6\u6a21\u5f0f` \uff08\u751f\u6210\u4e8b\u4ef6\u6a21\u5f0f\u4ee5\u5339\u914d\u4e8b\u4ef6\uff09\uff0c `\u670d\u52a1\u540d\u79f0` \u9009\u62e9 EC2\uff0c `\u4e8b\u4ef6\u7c7b\u578b` \u9009\u62e9 EC2 Instance State-change Notification\n3. \u9009\u62e9 `\u4efb\u4f55\u72b6\u6001` \u6216\u8005 `\u7279\u5b9a\u72b6\u6001` \uff08\u5982\u679c\u8981\u81ea\u52a8\u589e\u52a0\u5b9e\u4f8b\u9700\u8981 running\uff0c\u5982\u679c\u8981\u81ea\u52a8\u5220\u9664\u5b9e\u4f8b\u9700\u8981 terminated\uff09\n4. \u5728\u53f3\u4fa7\u76ee\u6807\u680f\uff0c\u9009\u62e9 SQS \u961f\u5217\uff0c\u5e76\u9009\u62e9\u914d\u7f6e\u7684\u961f\u5217\u540d\n5. \u914d\u7f6e\u8be6\u7ec6\uff0c\u7136\u540e\u66f4\u65b0\u89c4\u5219\n\n\u5f53\u6bcf\u6b21\u5b9e\u4f8b\u72b6\u6001\u53d8\u5316\u65f6\uff08\u5f00\u542f\u6216\u5173\u95ed\uff09\u5373\u4f1a\u5411\u961f\u5217\u53d1\u9001\u6d88\u606f\uff0c\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u597d\u5bf9\u5e94\u7684\u76d1\u542c\u89c4\u5219\uff0c\u5373\u53ef\u542f\u52a8\u76d1\u542c\u3002\n\n# Docker \u4e2d\u4f7f\u7528\n\n\u4f7f\u7528\u63d0\u4f9b\u7684 Dockerfile \u6784\u5efa\u955c\u50cf\u3002\n\n```\ndocker build -t jumpserver-sync:latest .\n```\n\n\u5982\u679c\u865a\u62df\u673a\u6216\u5bb9\u5668\u6ca1\u6709\u83b7\u53d6\u5b9e\u4f8b\u7684\u6743\u9650\uff0c\u5219\u9700\u8981\u7528 key \u7684\u65b9\u5f0f\u6ce8\u5165\u5bb9\u5668\u3002\n\u51c6\u5907\u597d profile \u6587\u4ef6\uff08\u7528\u4e8e\u6388\u6743\u83b7\u53d6\u5b9e\u4f8b\u7684\u6743\u9650\uff0c\u5982 AWS \u7684 access_key \u548c secret\u3002\n\n\u4f8b\u5982\uff0cAWS profile script\n\n```\naws configure set aws_access_key_id AAAAAAAAAAAA --profile test\naws configure set aws_secret_access_key SSSSSSSSS --profile test\naws configure set region us-east-1 --profile test\n```\n\n\u540c\u65f6\u9700\u8981\u51c6\u5907 config.yml \u914d\u7f6e\u6587\u4ef6\u3002\n\n\u4f7f\u7528 docker \u8fd0\u884c\u5bb9\u5668\uff0c\u5e76\u63d0\u4f9b profile \u811a\u672c\u548c\u914d\u7f6e\u6587\u4ef6\n\n```\ndocker run -d -e \"AWS_PROFILE_SCRIPT=/opt/aws/.aws_profile.sh\" -v .aws_profile.sh:/opt/aws/.aws_profile.sh -v config.yml:/opt/jms/config.yml jumpserver-sync:latest sync -c /opt/jms/config.yml\n```\n\n`AWS_PROFILE_SCRIPT`\u73af\u5883\u53d8\u91cf\u7528\u4e8e\u6307\u5b9a profile \u811a\u672c\u7684\u8def\u5f84\u3002\n\n# \u6d4b\u8bd5\n\n\u6d4b\u8bd5\u9700\u8981\u914d\u7f6e\u4e00\u4e2a\u6d4b\u8bd5\u73af\u5883\uff1a\n\n- \u5b89\u88c5 pytest\n- \u90e8\u7f72\u4e00\u4e2a\u6d4b\u8bd5 Jumpserver \u670d\u52a1\uff0c\u4e14\u4f7f\u7528\u57df\u540d test.jumpserver.com (\u53ef\u4ee5\u4fee\u6539 hosts \u6587\u4ef6)\n- \u4fdd\u8bc1\u4f7f\u7528 admin/admin \u53ef\u4ee5\u767b\u9646\u4e14\u662f\u7ba1\u7406\u5458\u6743\u9650\uff08\u9ed8\u8ba4\u914d\u7f6e\uff09\n- \u5728\u8d44\u4ea7\u5217\u8868\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u6d4b\u8bd5\u8d44\u4ea7\u8282\u70b9 Default/ops/prod\n- \u6dfb\u52a0 AWS SQS ops_test \u4e14\u6ca1\u6709\u6d88\u606f\uff0c\u7528\u4e8e\u6d4b\u8bd5\u76d1\u542c\n- \u914d\u7f6e AWS \u5bc6\u94a5\n\n\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u6d4b\u8bd5\n```\npytest\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "jumpserver,python,cloud,aws", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "jumpserver-sync", "package_url": "https://pypi.org/project/jumpserver-sync/", "platform": "", "project_url": "https://pypi.org/project/jumpserver-sync/", "project_urls": null, "release_url": "https://pypi.org/project/jumpserver-sync/0.1.4/", "requires_dist": [ "hsettings (>=0.1)", "requests", "click", "colorama", "diskcache", "boto3", "pyyaml" ], "requires_python": ">=3.5", "summary": "Tools to sync large amount of instance into Jumpserver.", "version": "0.1.4" }, "last_serial": 5355448, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "a9d8f2c646c89b17b98d2f8189d6f537", "sha256": "9b203a610ef62fb8aa75b19d3ecaa5f495558ed9ce4320f5ca50ba925a0baeee" }, "downloads": -1, "filename": "jumpserver_sync-0.1.2-py3.6.egg", "has_sig": false, "md5_digest": "a9d8f2c646c89b17b98d2f8189d6f537", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": ">=3.5", "size": 57978, "upload_time": "2019-05-27T05:29:08", "url": "https://files.pythonhosted.org/packages/02/8e/dc16d22300f9b6dfd6d94b35794eb34e87a06a59883c7d47ca4dad6ef785/jumpserver_sync-0.1.2-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "a5323145418b8b704e895b4434244ff7", "sha256": "4d3515b00a5fe95d5fbbe581d3446b5e0d6633f31ca0f7eb0f6dead6d77c34d4" }, "downloads": -1, "filename": "jumpserver_sync-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "a5323145418b8b704e895b4434244ff7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 24799, "upload_time": "2019-05-27T05:29:03", "url": "https://files.pythonhosted.org/packages/42/7e/cf800f3f92d3a46f5495c3ca883895c9de0ad2500df0d47b4f500e1f8ce5/jumpserver_sync-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7093a6d7c958324c2f41a76397f60d77", "sha256": "636666d139d2876199d5262990a60de3ea2bd2351848ea341887dbbef19562a3" }, "downloads": -1, "filename": "jumpserver-sync-0.1.2.tar.gz", "has_sig": false, "md5_digest": "7093a6d7c958324c2f41a76397f60d77", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24965, "upload_time": "2019-05-27T05:29:07", "url": "https://files.pythonhosted.org/packages/7f/aa/a2752a2e9cbb22a321cc9c26df74046cedd904be1d190b945f1006c08a53/jumpserver-sync-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "1bc7828ddf02ae3867efd6b387249622", "sha256": "1918666c058997fd85e55de3c0f8dd1dd6f2cc10542a76b459ef823df024ff51" }, "downloads": -1, "filename": "jumpserver_sync-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "1bc7828ddf02ae3867efd6b387249622", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25357, "upload_time": "2019-05-29T07:08:28", "url": "https://files.pythonhosted.org/packages/88/08/a8feb7f0f324383644f369908dc9beb4a00630322fb1ea0f8095a42ed7a2/jumpserver_sync-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c62532ad6bcc8a766e65096ec155d33", "sha256": "18a31ce5ffb102b359af402b100352a1c11a4d8485b647a474abd085254ef39f" }, "downloads": -1, "filename": "jumpserver-sync-0.1.3.tar.gz", "has_sig": false, "md5_digest": "3c62532ad6bcc8a766e65096ec155d33", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 25775, "upload_time": "2019-05-29T07:08:30", "url": "https://files.pythonhosted.org/packages/3c/94/d75b119457245198097134a70f50078ddf24aa36786becc45ca5baba6930/jumpserver-sync-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c819450668009646111e69def30c7d84", "sha256": "0adbf1396c7f82ed80f205b5628ace180ad1d52e4979ceabbb525ef7a72e5ee1" }, "downloads": -1, "filename": "jumpserver_sync-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c819450668009646111e69def30c7d84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25367, "upload_time": "2019-06-04T03:13:21", "url": "https://files.pythonhosted.org/packages/9e/45/f3d4338e53f038e8489485ccba8ddf893fab4bc4aaacf3284279609aade4/jumpserver_sync-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8241af06948f0ab1ab064aa6782063c7", "sha256": "f9419a5ce3de68221a68eb7084b4df97c91708479e57fd2433d967bb940b99c1" }, "downloads": -1, "filename": "jumpserver-sync-0.1.4.tar.gz", "has_sig": false, "md5_digest": "8241af06948f0ab1ab064aa6782063c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 25775, "upload_time": "2019-06-04T03:13:23", "url": "https://files.pythonhosted.org/packages/15/9a/b5a691acc9c5c836f2a8ae81a71fd24a3a7c275c51b41999012385679d2e/jumpserver-sync-0.1.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c819450668009646111e69def30c7d84", "sha256": "0adbf1396c7f82ed80f205b5628ace180ad1d52e4979ceabbb525ef7a72e5ee1" }, "downloads": -1, "filename": "jumpserver_sync-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "c819450668009646111e69def30c7d84", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25367, "upload_time": "2019-06-04T03:13:21", "url": "https://files.pythonhosted.org/packages/9e/45/f3d4338e53f038e8489485ccba8ddf893fab4bc4aaacf3284279609aade4/jumpserver_sync-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8241af06948f0ab1ab064aa6782063c7", "sha256": "f9419a5ce3de68221a68eb7084b4df97c91708479e57fd2433d967bb940b99c1" }, "downloads": -1, "filename": "jumpserver-sync-0.1.4.tar.gz", "has_sig": false, "md5_digest": "8241af06948f0ab1ab064aa6782063c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 25775, "upload_time": "2019-06-04T03:13:23", "url": "https://files.pythonhosted.org/packages/15/9a/b5a691acc9c5c836f2a8ae81a71fd24a3a7c275c51b41999012385679d2e/jumpserver-sync-0.1.4.tar.gz" } ] }