diff --git a/wally/hw_info.py b/wally/hw_info.py
index 764d126..2a5c1e5 100644
--- a/wally/hw_info.py
+++ b/wally/hw_info.py
@@ -1,4 +1,5 @@
 import re
+import logging
 from typing import Dict, Iterable
 import xml.etree.ElementTree as ET
 from typing import List, Tuple, cast, Optional
@@ -7,6 +8,9 @@
 from .node_interfaces import IRPCNode
 
 
+logger = logging.getLogger("wally")
+
+
 def get_data(rr: str, data: str) -> str:
     match_res = re.search("(?ims)" + rr, data)
     return match_res.group(0)
@@ -105,12 +109,12 @@
 
 class SWInfo:
     def __init__(self) -> None:
-        self.partitions = None  # type: str
+        self.mtab = None  # type: str
         self.kernel_version = None  # type: str
-        self.libvirt_version = None  # type: str
-        self.qemu_version = None  # type: str
+        self.libvirt_version = None  # type: Optional[str]
+        self.qemu_version = None  # type: Optional[str]
         self.OS_version = None  # type: utils.OSRelease
-        self.ceph_version = None  # type: str
+        self.ceph_version = None  # type: Optional[str]
 
 
 def get_sw_info(node: IRPCNode) -> SWInfo:
@@ -118,18 +122,35 @@
 
     res.OS_version = utils.get_os(node)
     res.kernel_version = node.get_file_content('/proc/version').decode('utf8').strip()
-    res.partitions = node.get_file_content('/etc/mtab').decode('utf8').strip()
-    res.libvirt_version = node.run("virsh -v", nolog=True).strip()
-    res.qemu_version = node.run("qemu-system-x86_64 --version", nolog=True).strip()
-    res.ceph_version = node.run("ceph --version", nolog=True).strip()
+    res.mtab = node.get_file_content('/etc/mtab').decode('utf8').strip()
+
+    try:
+        res.libvirt_version = node.run("virsh -v", nolog=True).strip()
+    except OSError:
+        res.libvirt_version = None
+
+    try:
+        res.qemu_version = node.run("qemu-system-x86_64 --version", nolog=True).strip()
+    except OSError:
+        res.qemu_version = None
+
+    try:
+        res.ceph_version = node.run("ceph --version", nolog=True).strip()
+    except OSError:
+        res.ceph_version = None
 
     return res
 
 
-def get_hw_info(node: IRPCNode) -> HWInfo:
-    res = HWInfo()
-    lshw_out = node.run('sudo lshw -xml 2>/dev/null', nolog=True)
+def get_hw_info(node: IRPCNode) -> Optional[HWInfo]:
 
+    try:
+        lshw_out = node.run('sudo lshw -xml 2>/dev/null')
+    except Exception as exc:
+        logger.warning("lshw failed on node %s: %s", node.info.node_id(), exc)
+        return None
+
+    res = HWInfo()
     res.raw = lshw_out
     lshw_et = ET.fromstring(lshw_out)
 
