[P2604] Fase 15: Optimización IA e integración de herramienta candados. Sincronización de bitácoras y actualización de planes de proyecto.
This commit is contained in:
@@ -15,6 +15,7 @@ module ADN
|
||||
{
|
||||
nombre: nodo_nombre,
|
||||
ip: detectar_ip(contenido),
|
||||
ip_lan: detectar_ip_lan(contenido),
|
||||
host: detectar_host(contenido),
|
||||
so: detectar_so(contenido),
|
||||
vmid: detectar_vmid(contenido),
|
||||
@@ -25,6 +26,13 @@ module ADN
|
||||
}
|
||||
end
|
||||
|
||||
def self.extraer_ip_lan(nodo_nombre)
|
||||
ruta = File.join(ADN::NODOS_DIR, "#{nodo_nombre}.md")
|
||||
return nil unless File.exist?(ruta)
|
||||
contenido = File.read(ruta, encoding: 'UTF-8')
|
||||
detectar_ip_lan(contenido)
|
||||
end
|
||||
|
||||
def self.detectar_usuario(contenido)
|
||||
# **SSH**: user@ip:port o DOMAIN\user@ip:port
|
||||
if contenido =~ /\*\*SSH\*\*:\s*`?([^`\s(]+)/i
|
||||
@@ -69,6 +77,18 @@ module ADN
|
||||
nil
|
||||
end
|
||||
|
||||
def self.detectar_ip_lan(contenido)
|
||||
# Buscar IP de LAN en formato: `10.0.100.1` (después de "LAN" o "Bridge" o "Alias")
|
||||
if contenido =~ /(?:LAN|Bridge vmbr0|Alias).*?`([\d\.]+)`/i
|
||||
return $1
|
||||
end
|
||||
# - **IP**: `10.0.100.12/24` (Estática) - buscar solo la IP antes de /
|
||||
if contenido =~ /\*\*IP\*\*:\s*`([\d\.]+)\//
|
||||
return $1
|
||||
end
|
||||
nil
|
||||
end
|
||||
|
||||
def self.detectar_host(contenido)
|
||||
if contenido =~ /\*\*(?:Padre\/Host|Host Anfitrión|Anfitrión|Host)\*\*\s*[:\|]?\s*`?([a-zA-Z0-9\-]+)`?/i
|
||||
return $1
|
||||
@@ -122,11 +142,12 @@ module ADN
|
||||
nil
|
||||
end
|
||||
|
||||
# Detecta tipo de autenticación SSH
|
||||
# Formato: (Passphrase RSA, ...) o (Password, ...)
|
||||
def self.detectar_auth_type(contenido)
|
||||
if contenido =~ /\*\*SSH\*\*:.*\((Passphrase|Password)/i
|
||||
return $1.downcase == 'passphrase' ? :passphrase : :password
|
||||
if contenido =~ /\*\*SSH\*\*:.*\((Passphrase|Password|RSA)/i
|
||||
match = $1.downcase
|
||||
return :passphrase if match == 'passphrase'
|
||||
return :rsa if match == 'rsa'
|
||||
return :password
|
||||
end
|
||||
:password # Default para VMs Windows
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user