Prompt Title: Creer module ansible pour tester connexion port 77 et 22 pour user sysadm et root

Created 1 year ago
Votes 0
Views 37 times
IT
0
Human: comment ecrire un module pour ansible qui test des connexions ssh sur le port 77 et le port 22 et à chaque test le user sysadm ou root
ChatGPT:

Pour écrire un module Ansible personnalisé qui teste les connexions SSH sur les ports 77 et 22 avec les utilisateurs sysadm ou root, vous pouvez suivre ces étapes :

  1. Créez un fichier Python pour le module, par exemple test_ssh_conn.py, et placez-le dans un répertoire approprié pour les modules personnalisés.

  2. Dans ce fichier, importez les bibliothèques nécessaires et définissez les fonctions pour établir et tester la connexion SSH.

  3. Utilisez la bibliothèque Paramiko pour gérer les connexions SSH.

Voici un exemple de module Ansible personnalisé pour effectuer cette tâche :

python
#!/usr/bin/python from ansible.module_utils.basic import AnsibleModule import paramiko import socket def test_ssh_connection(host, port, username, password, timeout=5): try: ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(host, port=port, username=username, password=password, timeout=timeout) ssh.close() return True except (paramiko.AuthenticationException, paramiko.SSHException, socket.error): return False def main(): module = AnsibleModule( argument_spec=dict( host=dict(type='str', required=True), ports=dict(type='list', elements='int', required=False, default=[22, 77]), users=dict(type='list', elements='str', required=False, default=['sysadm', 'root']), password=dict(type='str', required=True, no_log=True) ) ) host = module.params['host'] ports = module.params['ports'] users = module.params['users'] password = module.params['password'] results = {} for port in ports: for user in users: if test_ssh_connection(host, port, user, password): results[f"{user}@{host}:{port}"] = "success" else: results[f"{user}@{host}:{port}"] = "failed" module.exit_json(changed=False, results=results) if __name__ == '__main__': main()
  1. Utilisez ce module dans un playbook Ansible, en fournissant les paramètres nécessaires :
yaml
--- - name: Test SSH connections hosts: localhost tasks: - name: Test SSH connections on ports 22 and 77 with sysadm and root users test_ssh_conn: host: example.com password: my_password register: result - name: Display results debug: var: result.results

Ce playbook utilise le module personnalisé test_ssh_conn pour tester les connexions SSH sur les ports 22 et 77 avec les utilisateurs sysadm et root, puis affiche les résultats.

avatar
jean
Shared 1 prompt
Created 1 year ago

Leave a Comment