생각보다 API 가 공개가 되어 쉽게 해결이 되었습니다.
블로그장은 일단 부딪혀 보고 않되면 되게 하는 성격이라 좀 더러버요 ㅎㅎㅎ
참고로 제 부하직원 하지 마세요 ㅎㅎㅎ 그럼 힘들고 고달플겁니다.
아 개인적인 이야기는 여기서 그만하고 여튼 전 시놀로지를 이용하면서 가상으로 안드로이드와 우분투를 현재 동작시키고 있습니다.
안드로이드는 특정 앱의 적립을 위해서 켜놓고 있으며 우분투는 도커 빌드를 위하여 켜놓고 있습니다.
상시 가상 컴퓨터를 켜놓게 되면 시놀로지의 자원을 많이 사용하게 됩니다.
우분투의 경우에는 빌드를 위한 가상컴퓨터이니 꺼두어도 상관없겠습니다.
공개할 소스는 이렇습니다
import requests
import argparse
def start2(url, id, passwd):
s = requests.Session()
data = url + '/webapi/auth.cgi?api=SYNO.API.Auth&method=login&version=3&account=' + id +'&passwd=' + passwd + '&format=sid&session=dsm_info'
request_headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) \ AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 \ Safari/537.36',}
text = requests.get(data, headers=request_headers).content
print(text)
def start(url, sid, mode, name):
s = requests.Session()
data = url + '/webapi/entry.cgi?_sid=' + sid + '&api=SYNO.Virtualization.API.Guest.Action&method=' + mode + '&version=1&guest_name=' + name
request_headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) \ AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 \ Safari/537.36',}
text = requests.get(data, headers=request_headers).content
print(text)
def main():
parser = argparse.ArgumentParser(prog='시놀로지 VMM ON/OFF Beta', description='시놀로지 VMM ON/OFF Beta',epilog="도움말 확인하세요.")
parser.add_argument('--url', required=True, type=str, help='Url')
parser.add_argument('--sid', required=False, type=str, help='SID')
parser.add_argument('--id', required=False, type=str, help='시놀로지ID')
parser.add_argument('--passwd', required=False, type=str, help='시놀로지PASSWD')
parser.add_argument('--mode', required=False, default='none', type=str, choices=['poweron','poweroff'])
parser.add_argument('--name', required=False, type=str, help='가상머신 이름')
args = parser.parse_args()
url = args.url
sid = args.sid
mode = args.mode
name = args.name
id = args.id
passwd = args.passwd
if mode == 'poweron' or mode == 'poweroff':
print("ad")
start(url, sid, mode, name)
if mode == 'none':
start2(url, id, passwd)
if __name__=="__main__":
main()
간단하면서도 무언가 이상하죠??
이 소스를 이용하기 위해선 시놀로지 API 에서 원하는 SID 번호라는게 존재합니다.
처음에는 SID 번호를 받기 위해서는
python 저장한이름.py --url 본인의시놀로지주소:포트번호 --id 시놀로지의아이디 --passwd 시놀로지의비밀번호
이렇게 입력하시면
b'{"data":{"sid":"블라블라많이깁니다."},"success":true}\n'
위와 같이 나오게 됩니다.
그러면 끝이나는것이고요.
이제 사용하기 위해서는 시놀로지의 가상컴퓨터 이름을 본인이 알고 계시니 전 모르겠습니다.
여튼 vmm 가상컴퓨터에 들어가보시면 목록이 쭉 나오게 되는데 이름 탭의 그 이름이 --name 으로 들어갑니다.
자 이제 가상컴퓨터를 꺼보겠습니다.
python 저장한이름.py --url 본인의시놀로지주소:포트번호 --sid 블라블라 --name 가상컴퓨터이름 --mode poweroff
이렇게 입력하시면 가상컴퓨터가 꺼질겁니다.
켜기 위해서는 --mode poweron 이렇게 해주시면 되십니다.
'파이썬' 카테고리의 다른 글
FLASK 웹관리가 정상 업데이트 되었습니다. (0) | 2021.06.25 |
---|---|
FLASK 업데이트를 할수 있도록 기능을 추가했습니다. (0) | 2021.06.24 |
FLASK 재고관리 관련 버그 수정 (0) | 2021.06.23 |
FLASK 재고관리및 외부에서 프로그램 실행 (0) | 2021.06.20 |
현재 까지 만든 FLASK 원격 관리 공개합니다. (0) | 2021.06.19 |