vrun/
+# Pas utile
+regen_config_SOGo.sh
+
# gruik
newsbot/workingfile
newsbot/dicoread.txt
+ssh/plouf.json
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""Script de génération automatique de fichier ~/.ssh/config
+
+TODO : mettre une option pour append le ssh des bornes
+"""
+
+import sys
+import re
+sys.path.append('/usr/scripts/')
+
+import lc_ldap.shortcuts
+import lc_ldap.objets
+
+#: Fichier à inclure au début
+static_before_file = "./static_before"
+
+#: Fichier à inclure à la fin
+static_after_file = "./static_after"
+
+#: regexp pour exclure certains "serveurs"
+black_regex = re.compile('^((bigbrother|hugebrother|littlebrother|tinybrother|imprimante|vigile(--?\d[a-z])?|bat[abcghijmopk]-\d|minigiga|multiprise-v6|chu|pika|kvm|pulsar|nols2?).adm.crans.org|ftp.federez.net|ns1.crans.ens-cachan.fr)$')
+
+#: Proxy pour contacter le VLAN adm
+adm_proxy = u"sable.crans.org"
+
+#: Login pour se connecter sur les serveurs Cr@ns
+login_crans = u"legallic"
+
+#: À afficher avant les serveurs Cr@ns
+crans_header = u"""
+# +-------------------+
+# | Serveurs du Cr@ns |
+# +-------------------+
+# Accessible aux apprentis
+# sauf zamok et ssh2, accessibles à tous les adhérents
+
+"""
+
+#: À afficher avant les serveurs adm
+crans_adm_header = u"""
+# +-------------------------+
+# | Serveurs Cr@ns adm-only |
+# +-------------------------+
+# Accessibles aux apprentis, mais ne sont que sur le VLAN adm
+# d'où la ProxyCommand
+# fy et fz ne sont accessibles qu'aux nounous
+
+"""
+
+def blacklisted(key, aliases):
+ """Répond True si le serveur ne doit pas apparaître dans le fichier de conf."""
+ for a in aliases:
+ if black_regex.match(a):
+ return True
+ return False
+
+def cache_servers(servs):
+ import json
+ json.dump(servs, open("plouf.json", "w"))
+
+def load_servers():
+ import json
+ return json.load(open("plouf.json"))
+
+def get_servers(help=None):
+ """Récupère la liste des serveurs dans la base LDAP."""
+ if help is None:
+ c = lc_ldap.shortcuts.lc_ldap_readonly(user=u"legallic")
+
+ l = c.allMachines()
+ l = [m for m in l if isinstance(m, lc_ldap.objets.machineCrans)]
+ else:
+ l = help
+
+ hosts = {}
+ for m in l:
+ host = m["host"][0].value
+ h = host.replace(".crans.org", "")
+ if hosts.has_key(h):
+ print (u"Doublon : clé %s had %r and wants %r" % (h, hosts[h], [host] + [a.value for a in m["hostAlias"]])).encode("utf-8")
+ else:
+ hosts[h] = [host] + [a.value for a in m["hostAlias"]]
+ return hosts
+
+def output(key, aliases, use_adm_proxy=False):
+ """ Renvoie le block de conf pour un host.
+ Traite particulièrment : ssh2, les ilo, la ferme"""
+ # On teste si le serveur est dans la ferme
+ ferme = any([a.endswith(u".ferme.crans.org") for a in aliases])
+ shorts = list(set([a.replace(".crans.org", "") for a in aliases]))
+ if ferme:
+ shorts.append(a.split(".", 1)[0])
+ shorts.sort()
+ if key in shorts:
+ shorts.remove(key)
+ out = u"Host %s\n" % (u" ".join([key] + shorts + aliases))
+ if key=="ssh2":
+ out += u" # Un serveur ssh qui n'est qu'un nat vers 138.231.136.1:22\n"
+ out += u" # pour passer à travers les blocages de ports (443 = https)\n"
+ out += u" HostName 138.231.136.2\n"
+ out += u" Port 443\n"
+ out += u" User %s\n" % login_crans
+ out += u" ForwardAgent yes\n"
+ out += u"\n"
+ return out
+ hostname = u"%s.crans.org" % (key)
+ out += u" HostName %s\n" % (hostname)
+ out += u" User %s\n" % login_crans
+ if not key in ["apprentis", "batk-0"]:
+ out += u" ForwardAgent yes\n"
+ if use_adm_proxy:
+ out += u" ProxyCommand ssh %s -W %%h:%%p\n" % (adm_proxy)
+ if key.endswith("-ilo.adm"):
+ out += u" HostKeyAlgorithms ssh-rsa\n"
+ out += u"\n"
+ return out
+
+def compute_ssh_config(servers):
+ """Affiche le ssh_config à partir de la liste de serveurs."""
+ # Un serveur "plouf.adm.crans.org" est adm-only si aucune clé "plouf", "plouf.ferme" n'existe
+ keys = servers.keys()
+ adm_only = {k : aliases for k, aliases in servers.items() if all([not k.replace(".adm", zone) in keys
+ for zone in [".ferme", ""]])}
+ # On veut pouvoir utiliser babar et pas seulement babar.adm
+ for k in adm_only.keys():
+ newk = k.replace(".adm", "")
+ if not newk in adm_only[k]:
+ adm_only[k] = [k.replace(".adm", "")] + adm_only[k]
+ for a in adm_only.keys():
+ del servers[a]
+ s = crans_header
+ keys = servers.keys()
+ keys.sort()
+ for h in keys:
+ s += output(h, servers[h])
+ s += crans_adm_header
+ keys = adm_only.keys()
+ keys.sort()
+ for h in keys:
+ s += output(h, adm_only[h], use_adm_proxy=True)
+ return s
+
+if __name__ == '__main__':
+ try:
+ servers = load_servers()
+ except:
+ servers = get_servers()
+ cache_servers(servers)
+ servers = {h:aliases for h, aliases in servers.iteritems() if not blacklisted(h, aliases)}
+ out = compute_ssh_config(servers)
+ before = open(static_before_file).read().decode("utf-8")
+ after = open(static_after_file).read().decode("utf-8")
+ print (before + out + after).encode("utf-8")
--- /dev/null
+
+# +---------+
+# | FedeRez |
+# +---------+
+# Accessibles aux membres de l'équipe d'admin de FedeRez
+
+# Actuellement down, mais on ne sait jamais
+Host nautilus nautilus.federez.net
+ HostName nautilus.federez.net
+ User legallic
+ ForwardAgent yes
+
+Host forge forge.federez.net baldrick.federez.net baldrick baldrick.crans.org
+ HostName baldrick.federez.net
+ User legallic
+ ForwardAgent yes
+
+Host quigon quigon.federez.net
+ HostName quigon.federez.net
+ User legallic
+ ForwardAgent yes
+
+Host polygon polygon.federez.net
+ HostName polygon.federez.net
+ User legallic
+ ForwardAgent yes
+
+Host hexagon hexagon.federez.net
+ HostName hexagon.federez.net
+ User legallic
+ ForwardAgent yes
+
+
+# +-------------------+
+# | Serveurs de l'ENS |
+# +-------------------+
+# Accessibles aux élèves de l'ENS
+
+Host tselin tselin.clietu tselin.clietu.ens-cachan.fr acces1.rip.ens-cachan.fr acces1 rip
+ HostName tselin.clietu.ens-cachan.fr
+ User vlegalli
+ ProxyCommand ssh vlegalli@tahines.ens-cachan.fr -W %h:%p
+
+Host tahines.ens-cachan.fr tahines2 tahines
+ HostName tahines.ens-cachan.fr
+ User vlegalli
+
+
+# +-----+
+# | Ulm |
+# +-----+
+# Parce que je me suis inscrit à la DSI d'Ulm
+
+Host clipper clipper.ens.fr
+ HostName clipper.ens.fr
+ User legallic
+
+
+# +------------------+
+# | Département info |
+# +------------------+
+# Machines du département informatique de l'ENSC
+
+Host dptinfo21.dptinfo.ens-cachan.fr info21 infossh ssh.dptinfo
+ #HostName 138.231.36.60
+ HostName ssh.dptinfo.ens-cachan.fr
+ User vlegalli
+ ForwardAgent yes
+
+Host dptinfo*.dptinfo.ens-cachan.fr
+ HostName %h
+ User vlegalli
+ ProxyCommand ssh vlegalli@ssh.dptinfo.ens-cachan.fr -W %h:%p
+ ForwardAgent yes
+
+Host info*
+ HostName dpt%h.dptinfo.ens-cachan.fr
+ User vlegalli
+ ProxyCommand ssh vlegalli@ssh.dptinfo.ens-cachan.fr -W %h:%p
+ ForwardAgent yes
+
+
+# +---------+
+# | Télécom |
+# +---------+
+# Stage au labo de Télécom ParisTech
+
+Host ssh.enst enst ssh.enst.fr
+ HostName ssh.enst.fr
+ User legallic
+ ForwardAgent yes
+
+Host infres infres.enst.fr
+ HostName infres.enst.fr
+ User legallic
+ ProxyCommand ssh ssh.enst.fr -W %h:%p
+ ForwardAgent yes
+
+Host tipaza tipaza.enst.fr
+ HostName tipaza.enst.fr
+ User legallic
+ ProxyCommand ssh ssh.enst.fr -W %h:%p
+ ForwardAgent yes
+
+# END (utile pour éviter les merge conflicts)
--- /dev/null
+# .ssh/config générique mis à votre disposition
+# par les gentils membres actifs du Cr@ns
+# Vous pouvez l'utilisez, le redistribuer, le modifier à votre convenance.
+# Des questions, des suggestions : {nounou,ca}@lists.crans.org
+# Typiquement, vous pouvez proposer d'ajouter la conf pour accéder à votre département
+# Licence : WTFPL
+
+# Les sections commentées par #~# sont des features qui ne sont pas activées
+# par défaut. Sentez-vous libre de les décommenter pour les utiliser.
+
+# À noter que la plupart des serveurs présents dedans sont des serveurs
+# du Cr@ns, qui risquent donc d'intéresser essentiellement des membres actifs.
+# Pensez à remplacer "loginCr@ns", "loginFedeRez" et "loginENS" par les login idoines
+
+#------------------------------------------------------------------------------
+
+# Les options qui ne sont pas identées sont activées pour toutes les connexions
+# Mêmes celles qui ne correspondent à aucun bloc plus bas
+# Activer la compression des données transmises lorsque c'est possible
+Compression yes
+
+#~# # Afficher la fingerprint du serveur sous la forme d'un ASCII art
+#~# VisualHostKey yes
+
+# Ne pas hasher les noms des machines auxquelles ont se connecte dans
+# le fichier known_hosts
+HashKnownHosts no
+
+# Vérifier la concordance du champ DNS SSHFP de la machine (si existant)
+# et de la fingerprint présentée par le serveur
+VerifyHostKeyDNS yes
+
+# Les options suivantes apparaissent dans les blocs
+# Host = commence un bloc avec les noms qui utiliseront ce bloc
+# HostName = nom réellement utilisé pour se connecter au serveur (ou son IP)
+# User = nom d'utilisateur distant
+# Port = port de connexion (pour override le port 22)
+# ForwardAgent = forwarder l'agent ssh sur la machine
+# (il vaut mieux qu'elle et ses administrateurs soient de confiance)
+# ProxyCommand = pour passer par un autre serveur intermédiaire
+# (pour un serveur qui ne peut pas être contacté directement)
+
+
+# +--------------+
+# | Mes machines |
+# +--------------+
+
+Host cerebro.crans.org cerebro
+ HostName cerebro.crans.org
+ User vincent
+ ForwardAgent yes
+
+Host eva.crans.org eva eeepc
+ HostName eva.crans.org
+ User vincent
+ ForwardX11 yes
+ ForwardAgent yes
+
+Host cabal.crans.org cabal
+ HostName cabal.crans.org
+ User vincent
+ ForwardX11 yes
+ ForwardAgent yes
+
+Host viki viki.wifi viki.wifi.crans.org
+ HostName viki.wifi.crans.org
+ User root
+ Port 2222
+
+# Les bots sur cerebro
+Host basile
+ HostName cerebro.crans.org
+ User basile
+ ForwardAgent yes
+Host note-cerebro
+ HostName cerebro.crans.org
+ User note
+ ForwardAgent yes
+Host deconnaisseur
+ HostName cerebro.crans.org
+ User deconnaisseur
+ ForwardAgent yes
+Host pendu Hung hung
+ HostName cerebro.crans.org
+ User hung
+ ForwardAgent yes
+Host historien
+ HostName cerebro.crans.org
+ User historien
+ ForwardAgent yes
+Host salesman Salesman
+ HostName cerebro.crans.org
+ User salesman
+ ForwardAgent yes
+Host themis Themis
+ HostName cerebro.crans.org
+ User themis
+ ForwardAgent yes
+Host saturnin Saturnin
+ HostName cerebro.crans.org
+ User saturnin
+ ForwardAgent yes
+Host ibot iBot
+ HostName cerebro.crans.org
+ User ibot
+ ForwardAgent yes
+
+
+# +--------+
+# | Pimeys |
+# +--------+
+# Serveur dédié ovh
+# pimeys.fr = 176.31.106.206
+
+Host pimeys pimeys.fr
+ HostName pimeys.fr
+ User vincent
+ ForwardAgent yes
+
+
+# +-----------------+
+# | Machines du BDE |
+# +-----------------+
+# Parce que j'étais respo-info Makiavé[list]
+
+Host kfet kfet.crans.org kfet1
+ HostName kfet.crans.org
+ User bde
+
+Host kfet2 kfet2.crans.org
+ HostName kfet2.crans.org
+ User vincent
+
+Host bde bde.crans.org note mininote invitation invitations note.crans.org mininote.crans.org invitations.crans.org invitation.crans.org
+ HostName bde.crans.org
+ User vincent
+ ForwardAgent yes
+
+Host bde2 bde2.crans.org note2
+ HostName bde2.crans.org
+ User vincent
+ ForwardAgent yes
+
+Host bde3 bde3.crans.org
+ HostName bde3.crans.org
+ User vincent
+ ForwardAgent yes
+
+Host video videobde videobde.crans.org
+ HostName videobde.crans.org
+ User vincent
+ ForwardAgent yes
+
+Host bureau bureau-bde bureau-bde.crans.org
+ HostName bureau-bde.crans.org
+ User bde
+
+
+# +----+
+# | PE |
+# +----+
+# Parce que j'y suis le bienvenu
+
+Host linkki linkki.crans.org
+ HostName linkki.crans.org
+ User sword
+
+Host ilma ilma.wifi ilma.wifi.crans.org
+ HostName ilma.wifi.crans.org
+ User sword
+
+Host ruoska ruoska.crans.org
+ HostName ruoska.crans.org
+ User vincent
+
+
+# +-------+
+# | Power |
+# +-------+
+# Le ftp de Nit, gère A♡-TV. Parce que j'y suis aussi le bienvenu
+
+Host power power.crans.org nit-git nit-git.crans.org
+ HostName power.crans.org
+ User vincent
+
+
+# +----+
+# | A♡ |
+# +----+
+# Parce que le département A♡ a une raspberry PI !
+
+Host rasputin rasputin.crans.org raspyjordy.crans.org raspyjordy
+ HostName rasputin.crans.org
+ User vincent
+