44Detects the operating system and distribution of remote hosts.
55"""
66
7- import re
87import logging
9- from typing import Optional , Dict , Any , Tuple
8+ from typing import Optional , Dict , Tuple
9+
1010from .ssh_manager import SSHConnection
1111
1212
@@ -112,16 +112,16 @@ def detect_os(self) -> Optional[OSInfo]:
112112 architecture = architecture ,
113113 )
114114
115- logger .info (f "Detected OS on { self .connection .host .name } : { os_info } " )
115+ logger .info ("Detected OS on %s: %s" , self .connection .host .name , os_info )
116116 return os_info
117117
118118 except Exception as e :
119- logger .error (f "Failed to detect OS on { self .connection .host .name } : { e } " )
119+ logger .error ("Failed to detect OS on %s: %s" , self .connection .host .name , e )
120120 return None
121121
122122 def _get_uname_info (self ) -> Dict [str , str ]:
123123 """Get uname information."""
124- exit_code , stdout , stderr = self .connection .execute_command ("uname -a" )
124+ exit_code , stdout , _stderr = self .connection .execute_command ("uname -a" )
125125 if exit_code != 0 :
126126 return {}
127127
@@ -139,7 +139,7 @@ def _get_uname_info(self) -> Dict[str, str]:
139139
140140 def _get_os_release_info (self ) -> Dict [str , str ]:
141141 """Get information from /etc/os-release."""
142- exit_code , stdout , stderr = self .connection .execute_command (
142+ exit_code , stdout , _stderr = self .connection .execute_command (
143143 "cat /etc/os-release 2>/dev/null || true"
144144 )
145145 if exit_code != 0 or not stdout .strip ():
@@ -157,7 +157,7 @@ def _get_os_release_info(self) -> Dict[str, str]:
157157
158158 def _get_lsb_info (self ) -> Dict [str , str ]:
159159 """Get LSB information."""
160- exit_code , stdout , stderr = self .connection .execute_command (
160+ exit_code , stdout , _stderr = self .connection .execute_command (
161161 "lsb_release -a 2>/dev/null || true"
162162 )
163163 if exit_code != 0 or not stdout .strip ():
@@ -237,33 +237,33 @@ def _normalize_distribution_name(self, distribution: str) -> str:
237237 # Handle common variations
238238 if "red hat" in distribution or "redhat" in distribution :
239239 return "rhel"
240- elif "centos" in distribution :
240+ if "centos" in distribution :
241241 return "centos"
242- elif "ubuntu" in distribution :
242+ if "ubuntu" in distribution :
243243 return "ubuntu"
244- elif (
244+ if (
245245 "linuxmint" in distribution
246246 or "linux mint" in distribution
247247 or distribution == "mint"
248248 ):
249249 return "linuxmint"
250- elif "debian" in distribution :
250+ if "debian" in distribution :
251251 return "debian"
252- elif "fedora" in distribution :
252+ if "fedora" in distribution :
253253 return "fedora"
254- elif "opensuse" in distribution or "suse" in distribution :
254+ if "opensuse" in distribution or "suse" in distribution :
255255 return "opensuse"
256- elif "arch" in distribution :
256+ if "arch" in distribution :
257257 return "arch"
258- elif "manjaro" in distribution :
258+ if "manjaro" in distribution :
259259 return "manjaro"
260- elif "alpine" in distribution :
260+ if "alpine" in distribution :
261261 return "alpine"
262- elif "freebsd" in distribution :
262+ if "freebsd" in distribution :
263263 return "freebsd"
264- elif "openbsd" in distribution :
264+ if "openbsd" in distribution :
265265 return "openbsd"
266- elif "darwin" in distribution or "macos" in distribution :
266+ if "darwin" in distribution or "macos" in distribution :
267267 return "macos"
268268
269269 return distribution
@@ -278,7 +278,7 @@ def _detect_package_manager(self, distribution: str) -> str:
278278 return default_pm
279279
280280 # Fallback: check for available package managers
281- for pm_name , commands in self .PACKAGE_MANAGERS .items ():
281+ for pm_name , _commands in self .PACKAGE_MANAGERS .items ():
282282 if self ._check_package_manager_exists (pm_name ):
283283 return pm_name
284284
@@ -303,13 +303,12 @@ def _get_architecture(self, uname_info: Dict[str, str]) -> str:
303303 # Normalize common architectures
304304 if arch in ["x86_64" , "amd64" ]:
305305 return "x86_64"
306- elif arch in ["i386" , "i686" ]:
306+ if arch in ["i386" , "i686" ]:
307307 return "i386"
308- elif arch .startswith ("arm" ):
308+ if arch .startswith ("arm" ):
309309 return "arm"
310- elif arch .startswith ("aarch64" ):
310+ if arch .startswith ("aarch64" ):
311311 return "arm64"
312- else :
313- return arch
312+ return arch
314313
315314 return "unknown"
0 commit comments