详细的代码实现
时间: 2023-08-31 22:05:56 浏览: 84
好的,下面是基于 Django 框架实现获取系统 IP、执行操作的代码实现:
首先,在 Django 的 views.py 文件中,创建一个视图函数来获取系统 IP 地址。可以使用 Python 的 socket 模块来获取 IP 地址,如下所示:
```python
import socket
def get_system_ip(request):
ip_address = socket.gethostbyname(socket.gethostname())
return JsonResponse({'ip_address': ip_address})
```
在上述代码中,我们使用 gethostbyname 和 gethostname 函数来获取本机的 IP 地址,并将其返回给前端页面。
接下来,在前端页面中创建一个按钮,并使用 AJAX 请求来调用视图函数获取对应系统的 IP 地址。代码如下:
```html
<button id="get_ip_address">获取系统 IP 地址</button>
<script>
$(document).ready(function() {
$('#get_ip_address').on('click', function() {
$.ajax({
url: '/get_system_ip/',
type: 'GET',
dataType: 'json',
success: function(response) {
console.log(response.ip_address);
},
error: function(response) {
console.log('Error');
}
});
});
});
</script>
```
在上述代码中,我们使用 jQuery 的 AJAX 函数来发送 GET 请求到 '/get_system_ip/' 这个 URL,然后在成功回调函数中将获取到的 IP 地址打印到控制台中。
接下来,我们需要创建一个模型或者数据库表,用于存储所有系统的 IP 地址以及对应的操作。代码如下:
```python
from django.db import models
class System(models.Model):
ip_address = models.CharField(max_length=20)
operation = models.CharField(max_length=100)
```
在上述代码中,我们创建了一个名为 System 的模型,并定义了两个字段:ip_address 和 operation。其中,ip_address 用于存储系统的 IP 地址,operation 用于存储系统需要执行的操作。
当用户点击前端页面中的按钮时,将会触发一个新的 AJAX 请求,该请求会把所点击的按钮对应的系统 IP 地址发送到 Django 后端。代码如下:
```html
<button class="execute_operation" data-ip-address="192.168.1.100" data-operation="ls -l">执行 ls -l 命令</button>
<button class="execute_operation" data-ip-address="192.168.1.101" data-operation="ps -ef">执行 ps -ef 命令</button>
<script>
$(document).ready(function() {
$('.execute_operation').on('click', function() {
var ip_address = $(this).data('ip-address');
var operation = $(this).data('operation');
$.ajax({
url: '/execute_operation/',
type: 'POST',
dataType: 'json',
data: {
'ip_address': ip_address,
'operation': operation
},
success: function(response) {
console.log(response.result);
},
error: function(response) {
console.log('Error');
}
});
});
});
</script>
```
在上述代码中,我们为每个按钮添加了两个 data 属性:data-ip-address 和 data-operation。当用户点击按钮时,我们可以获取这两个属性的值,并将其作为 POST 请求的参数发送到 '/execute_operation/' 这个 URL 中。在成功回调函数中,我们将执行结果打印到控制台中。
最后,在 Django 的 views.py 文件中,创建一个视图函数来执行操作。代码如下:
```python
import subprocess
def execute_operation(request):
if request.method == 'POST':
ip_address = request.POST.get('ip_address')
operation = request.POST.get('operation')
try:
output = subprocess.check_output(operation.split(), universal_newlines=True, timeout=5, stderr=subprocess.STDOUT, shell=False)
return JsonResponse({'result': output})
except subprocess.CalledProcessError as e:
return JsonResponse({'result': e.output})
except subprocess.TimeoutExpired as e:
return JsonResponse({'result': 'Timeout'})
else:
return JsonResponse({'result': 'Error'})
```
在上述代码中,我们使用 subprocess 模块来执行用户指定的操作,并将执行结果返回给前端页面。如果执行过程中出现了错误,例如命令不存在或执行超时等,则将错误信息返回给前端页面。
这样,我们就完成了基于 Django 框架实现获取系统 IP、执行操作的代码实现。
阅读全文