summaryrefslogtreecommitdiffstats
path: root/rescue
diff options
context:
space:
mode:
Diffstat (limited to 'rescue')
-rwxr-xr-xrescue/startssh25
1 files changed, 16 insertions, 9 deletions
diff --git a/rescue/startssh b/rescue/startssh
index 48bba7cbc..0a88820de 100755
--- a/rescue/startssh
+++ b/rescue/startssh
@@ -1,20 +1,27 @@
#!/bin/bash
-passwd=`genpasswd`
+# test for an up interface != lo
+if test "x"`ifconfig | cut -d ' ' -f 1 | grep -v '^$' | grep -v lo` = "x"; then
+ echo "There is no up interface, you can try to execute 'drvinst' to find drivers and 'dhcp-client' to configure your interface for DHCP." >&2
+ exit 5
+fi
+
+# generate host keys
+mkdir -p /etc/dropbear
+[[ -f /etc/dropbear/dropbear_dss_host_key ]] || dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key >/dev/null || { echo "Can't generate dsa host key" >&2 ; exit 4 }
+[[ -f /etc/dropbear/dropbear_rsa_host_key ]] || dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key >/dev/null || { echo "Can't generate rsa host key" >&2 ; exit 3 }
+# set a password
+passwd=`genpasswd`
if (( $? != 0 )); then
reset
exit $?
fi
+sed -E -i -e 's/^root:[^:]*:/root:'"$passwd"':/' /etc/passwd || { echo "Can't set password" >&2 ; exit 2 }
-# change passwd file
-sed -E -i -e 's/^root:[^:]*:/root:'"$passwd"':/' /etc/passwd
-
-# generate host keys
-mkdir -p /etc/dropbear
-[[ -f /etc/dropbear/dropbear_dss_host_key ]] || dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key >/dev/null
-[[ -f /etc/dropbear/dropbear_rsa_host_key ]] || dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key >/dev/null
+# test for /dev/pts
+grep '^devpts /dev/pts devpts ' /proc/mounts >/dev/null 2>/dev/null || mount -t devpts devpts /dev/pts
echo ""
echo -n "Starting ssh daemon... "
-dropbear -E 2>/var/log/dropbear.log && echo "OK"
+dropbear -E 2>/var/log/dropbear.log && echo "OK" || { echo "Failed" ; exit 1 }