diff --git a/debian/changelog b/debian/changelog
index 5054e04..c5dd058 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+base-files (10.2ubuntu6) eoan; urgency=medium
+
+  * motd/50-motd-news: set cloud-id to unknown if the tool exited with a
+    non-zero status, or printed an empty string (LP: #1841597)
+
+ -- Andreas Hasenack <andreas@canonical.com>  Tue, 27 Aug 2019 15:31:30 -0300
+
 base-files (10.2ubuntu5) eoan; urgency=medium
 
   * motd/50-motd-news: add cloud_id to user-agent string (LP: #1840946)
diff --git a/motd/50-motd-news b/motd/50-motd-news
index 026429f..838eeb0 100644
--- a/motd/50-motd-news
+++ b/motd/50-motd-news
@@ -67,7 +67,8 @@ fi
 # Generate our temp files, clean up when done
 NEWS=$(mktemp) || exit 1
 ERR=$(mktemp) || exit 1
-trap "rm -f $NEWS $ERR" HUP INT QUIT ILL TRAP KILL BUS TERM
+CLOUD=$(mktemp) || exit 1
+trap "rm -f $NEWS $ERR $CLOUD" HUP INT QUIT ILL TRAP KILL BUS TERM
 
 # Construct a user agent, similar to Firefox/Chrome/Safari/IE to
 # ensure a proper, tailored, accurate message of the day
@@ -84,10 +85,16 @@ codename="$DISTRIB_CODENAME"
 platform="$(uname -o)/$(uname -r)/$(uname -m)"
 arch="$(uname -m)"
 cpu="$(grep -m1 "^model name" /proc/cpuinfo | sed -e "s/.*: //" -e "s:\s\+:/:g")"
+cloud_id="unknown"
 if [ -x /usr/bin/cloud-id ]; then
-    cloud_id=$(/usr/bin/cloud-id 2>/dev/null | cut -c -40 | tr -c -d '[:alnum:]')
-else
-    cloud_id="unknown"
+    /usr/bin/cloud-id > "$CLOUD" 2>/dev/null
+    if [ "$?" -eq "0" ]; then
+        # sanitize it a bit, just in case
+        cloud_id=$(cut -c -40 "${CLOUD}" | tr -c -d '[:alnum:]')
+        if [ -z "${cloud_id}" ]; then
+            cloud_id="unknown"
+        fi
+    fi
 fi
 
 # Some messages may only be pertinent before or after some amount of uptime
@@ -124,5 +131,5 @@ for u in $URLS; do
 		: > "$CACHE"
  	fi
 done
-rm -f "$NEWS" "$ERR"
+rm -f "$NEWS" "$ERR" "$CLOUD"
 exit 0
