我是夏季公司的实习生。我已经被分配了一个必须在Django中完成的项目。我有一个粗略的设置,我需要一些关于如何进一步设置的反馈。 techops团队的员工在分手时会花费太多时间为开发人员重新启动虚拟机。解决方案是让用户自己做到这一点。自定义Django虚拟机控制面板 - 需要LDAP Questions/Insight
项目大纲
- 与LDAP凭证用户登录
- Server获取LDAP组,个人在[ 'techops', '工作人员']
- 只有服务器是分开的这些ldap组将被显示
- 用户将有能力重新启动这些虚拟机
- 服务器将通过SSH密钥ssh进入指定的VM域并触发虚拟机重启
我目前有能力让用户通过ldap登录管理面板,但不能在网站的单独验证页面上登录。有没有办法自动填充用户的LDAP组?
# Populate the Django user from the LDAP directory.
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "givenName",
"last_name": "sn",
"email": "mail"
}
我需要帮助了解如何LDAP作品(Django的),我怎么可以检索记录在当前用户,运行我get_Ldapgroups功能,这些群体比较服务器LDAP组,然后只显示那些服务器在/ reboot页面上。
请随时提问或索取任何其他文件。我感谢你的所有时间,并帮助你们提供给我。
这里是我的文件截至目前:
服务器的models.py
class Team(models.Model):
name = models.CharField(max_length=64)
email = models.EmailField(max_length=254, default='@business.com')
ldap_group = models.CharField(max_length=64)
def __unicode__(self):
return '"' + self.name + '" <' + self.email + '>'
class Site(models.Model):
name = models.CharField(max_length=254)
def __unicode__(self):
return self.name
class Server(models.Model):
hostname = models.CharField(max_length=254)
fqdn = models.CharField(max_length=254)
owner = models.ForeignKey(Team)
site = models.ForeignKey(Site)
def __unicode__(self):
return self.hostname
重启views.py 列出的服务器,当你点击一个服务器就可以让你知道,如果它是“活着”
from django.template import Context, loader
from django.http import HttpResponse
from servers.models import Server
import paramiko
import socket
def index(request):
t = loader.get_template('reboot/index.html')
servers = Server.objects.all()
c = Context({
'servers': servers,
})
return HttpResponse(t.render(c))
def test_ssh_liveness(ssh, name):
try:
ssh.connect(name, timeout='1')
return True
except socket.timeout:
# server is down
return False
except socket.gaierror:
# invalid server name
return False
except paramiko.SSHException:
# unknown host key
return True
def server(request, name):
ssh = paramiko.SSHClient()
is_alive = test_ssh_liveness(ssh, name)
return HttpResponse("You selected server "+name+" and it is "+str(is_alive))
重启模板
{% block title %}Server{% endblock %}
{% block content %}
<h1>Server</h1>
<ul>
{% for server in servers %}
<li><a href="{% url 'server' server.hostname %}">{{ server.hostname }}
{% endfor %}
</ul>
{% endblock %}
感谢您的帮助。我对django_authentication有一个体面的把握,并希望能尽快与ldap合作。我也会考虑卸载。 –