1
|
<br>
|
1、Get_RemoteAPP.ps1
1
2
3
4
5
6
7
8
9
10
|
set-executionpolicy
remotesigned
Import-Module
RemoteDesktopServices
function
GetAPP(){
$result
= ls -l RDS:\RemoteApp\RemoteAppPrograms\
$res
=
$result
|
ForEach-Object
{
$_
.Name}
return
$res
}
GetAPP
|
2、New_RemoteAPP.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
set-executionpolicy
remotesigned
Import-Module
RemoteDesktopServices
$appList
=
"C:\Program Files\PremiumSoft\Navicat Premium\navicat.exe"
,
"C:\Program Files (x86)\JetBrains\PyCharm Community Edition 2016.2.3\bin\pycharm.exe"
,
"C:\Program Files\PremiumSoft\Navicat Premium\navicat.exe"
,
"C:\Program Files (x86)\JetBrains\PyCharm Community Edition 2016.2.3\bin\pycharm.exe"
,
"C:\Program Files (x86)\OpenVPN\bin\openvpn-gui.exe"
,
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"
,
"C:\Program Files (x86)\KuGou\KGMusic\KuGou.exe"
,
"C:\Program Files (x86)\TeamViewer\TeamViewer.exe"
,
"C:\Program Files (x86)\Youdao\YoudaoNote\YoudaoNote.exe"
,
"C:\Users\Administrator.WIN-403TF0V1RLC\AppData\Local\youdao\dict\Application\YodaoDict.exe"
,"
"
function CheckAppPath($app)
{
foreach($list in $appList){
if ($list -like "
*
$app
*"){
$index
=
$list
| % {
[array]
::IndexOf(
$appList
,
$_
)}
$appPath
=
$appList
[
$index
]
return
$appPath
}
}
}
function
New-RDSRemoteApp
(
$appName
)
{
#返回值说明:
# 2 :程序已存在
# 1 : 添加成功
# 0 : 添加失败
if
(
Test-Path
RDS:\RemoteApp\RemoteAppPrograms\
$appName
) {
return
2
}
else
{
$appPath
= CheckAppPath
$appName
New-Item
-path RDS:\RemoteApp\RemoteAppPrograms -Name
$appName
-applicationpath
$appPath
>
$null
if
(
Test-Path
RDS:\RemoteApp\RemoteAppPrograms\
$appName
) {
return
1
}
else
{
return
0
}
}
}
New-RDSRemoteApp
$args
[0]
|
3、Remove_RemoteAPP.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
set-executionpolicy
remotesigned
Import-Module
RemoteDesktopServices
function
RemoveAPP(
$appName
){
#返回值0 :软件不存在
#返回值1 : 删除成功
#返回值2 : 删除失败
if
(
-not
(
Test-Path
RDS:\RemoteApp\RemoteAppPrograms\
$appName
)){
return
0
}
else
{
Remove-Item
-path RDS:\RemoteApp\RemoteAppPrograms\
$appName
-Recurse -Force -Confirm:
$false
|
Out-Null
if
(
-not
(
Test-Path
RDS:\RemoteApp\RemoteAppPrograms\
$appName
)){
return
1
}
else
{
return
2
}
}
}
RemoveAPP
$args
[0]
|
4、CallPowerShell.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import
subprocess
import
json
def
NewApp(param1):
try
:
args
=
[r
"powershell"
, r
"C:\flask_remoteAPP_http\PosershellModule\New_RemoteAPP.ps1"
,param1]
p
=
subprocess.Popen(args, stdout
=
subprocess.PIPE)
dt
=
p.stdout.read()
return
dt
except
Exception, e:
print
e
return
False
def
DelApp(param1):
try
:
args
=
[r
"powershell"
, r
"C:\flask_remoteAPP_http\PosershellModule\Remove_RemoteAPP.ps1"
,param1]
p
=
subprocess.Popen(args, stdout
=
subprocess.PIPE)
dt
=
p.stdout.read()
return
dt
except
Exception, e:
print
e
return
False
def
GetApp():
try
:
args
=
[r
"powershell"
, r
"C:\flask_remoteAPP_http\PosershellModule\Get_RemoteAPP.ps1"
]
p
=
subprocess.Popen(args, stdout
=
subprocess.PIPE)
dt
=
p.stdout.read()
datalist
=
dt.split(
"\n"
)
data
=
json.dumps(datalist)
return
data
except
Exception, e:
print
e
return
False
def
QueryAllapp():
f1
=
open
(r
"C:\flask_remoteAPP_http\PosershellModule\appInventory.txt"
,
"r"
)
data
=
{}
appData
=
{}
for
i
in
f1.readlines():
a
=
i.decode(
"gbk"
).split(
","
)
data[a[
1
]]
=
a[
0
]
appData[
"all"
]
=
data
jsondata
=
json.dumps(appData)
return
jsondata
|
5、run.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
from
flask
import
Flask,request
import
json
from
CallPowerShell
import
NewApp,DelApp,GetApp,QueryAllapp
app
=
Flask(__name__)
@app
.route(
'/newapp'
, methods
=
[
'GET'
,
'POST'
])
def
newapps():
try
:
if
request.method
=
=
'POST'
:
jsondata
=
request.get_data()
dictdata
=
json.loads(jsondata)
response
=
NewApp(dictdata[
"appName"
])
return
response
else
:
mes
=
'''
<p><h1>Not Found</H1></p>
<p>Request of this path cannot be found, or the server does not exist</p>
'''
return
mes
except
Exception,error:
print
Exception,
":"
,error
@app
.route(
'/delapp'
, methods
=
[
'GET'
,
'POST'
])
def
delapps():
try
:
if
request.method
=
=
'POST'
:
jsondata
=
request.get_data()
dictdata
=
json.loads(jsondata)
res
=
DelApp(dictdata[
'appName'
])
return
res
else
:
mes
=
'''
<p><h1>Not Found</H1></p>
<p>Request of this path cannot be found, or the server does not exist</p>
'''
return
mes
except
Exception,error:
print
Exception,
":"
,error
@app
.route(
'/getapp'
)
def
getapps():
try
:
res
=
GetApp()
return
res
except
Exception,error:
print
Exception,
":"
,error
@app
.route(
'/queryall'
)
def
queryalls():
try
:
res
=
QueryAllapp()
return
res
except
Exception,error:
print
Exception,
":"
,error
if
__name__
=
=
'__main__'
:
app.run(debug
=
True
,host
=
'0.0.0.0'
)
|
6、client.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#coding:utf-8
import
urllib2
import
json
def
newApp(appName):
url
=
'http://192.168.1.115:5000/newapp'
#url = 'http://192.168.1.115:5000/delapp'
data
=
{
'appName'
: appName}
headers
=
{
'Content-Type'
:
'application/json'
}
req
=
urllib2.Request(url
=
url, headers
=
headers, data
=
json.dumps(data))
response
=
urllib2.urlopen(req)
return
response.read()
def
delApp(appName):
url
=
'http://192.168.1.115:5000/delapp'
data
=
{
'appName'
: appName}
headers
=
{
'Content-Type'
:
'application/json'
}
req
=
urllib2.Request(url
=
url, headers
=
headers, data
=
json.dumps(data))
response
=
urllib2.urlopen(req)
return
response.read()
def
getApp():
url
=
'http://192.168.1.115:5000/getapp'
req
=
urllib2.Request(url
=
url)
response
=
urllib2.urlopen(req)
return
response.read()
def
queryAllApp():
url
=
'http://192.168.1.115:5000/queryall'
req
=
urllib2.Request(url
=
url)
response
=
urllib2.urlopen(req)
return
response.read()
if
__name__
=
=
"__main__"
:
a
=
queryAllApp()
b
=
json.loads(a)
print
b
|
7、接口说明
1、添加APP接口
请求方式:POST
传送数据类型:JSON
请求URL:http://192.168.1.115:5000/newapp
请求参数:{'appName':程序别名}
返回数据类型:字符串
返回结果:
返回 "1" 添加成功
返回 "2" 程序已存在
返回 "0" 添加失败
2、删除APP接口
请求方式:POST
传送数据类型:JSON
请求URL:http://192.168.1.115:5000/delapp
请求参数:{'appName':程序别名}
返回数据类型:字符串
返回结果:
返回 "1" 删除成功
返回 "2" 删除失败
返回 "0" app不存在
3、获取已添加的APP列表
请求方式:GET
请求URL:http://192.168.1.115:5000/getapp
请求参数:无参数
返回数据类型:json
返回数据:['app1','app2','app3']
4、获取可进行添加的APP列表(包含已添加)的APP列表
请求方式:GET
请求URL:http://192.168.1.115:5000/getapp
请求参数:无参数
返回数据类型:json
返回数据:{'all':{'app1别名':'app1中文名','app2别名':'app2中文名'}}
本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/1890352