Display IP and password if ssh boot option is used
[grml-quickconfig.git] / quickconfig / 002-ipaddr.sh
diff --git a/quickconfig/002-ipaddr.sh b/quickconfig/002-ipaddr.sh
new file mode 100644 (file)
index 0000000..c7cc3c8
--- /dev/null
@@ -0,0 +1,26 @@
+ROOTPWD=$(grep -Eo '\<ssh=[^ ]+' /proc/cmdline || true)
+
+if [ "$ROOTPWD" ]; then
+  ROOTPWD=${ROOTPWD#*=}
+
+  USER=$(getent passwd 1000 | cut -d: -f1)
+  [ -n "$USER" ] || USER="grml"
+
+  LOCAL_IF=$(ip -o route show | sed -nre '/^default /s/^default .*dev ([^ ]+).*/\1/p' | head -1)
+  if [ -n "$LOCAL_IF" ] ; then
+    IPADDR=$(ip -o addr show $LOCAL_IF | grep ' inet ' | head -n 1 | sed -e 's/.*inet \([^ ]*\) .*/\1/' -e 's/\/.*//')
+  fi
+
+  LOCAL_IF6=$(ip -6 -o route show | sed -nre '/^default /s/^default .*dev ([^ ]+).*/\1/p' | head -1)
+  if [ -n "$LOCAL_IF6" ] ; then
+    IPADDR6=$(ip -6 -o addr show $LOCAL_IF6 | grep ' inet6 ' | head -n 1 | sed -e 's/.*inet6 \([^ ]*\) .*/\1/' -e 's/\/.*//')
+  fi
+
+  LINE='print_line "You can connect with SSH to: $IPADDR $IPADDR6";
+print_line "The password for user root/$USER is: $ROOTPWD";
+  print_delim;
+'
+fi
+
+display_entry() { return 0; }
+