我是夏季公司的實習生。我已經被分配了一個必須在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合作。我也會考慮卸載。 –