99_10_failsafe_login 640 B

123456789101112131415161718192021
  1. #!/bin/sh
  2. # Copyright (C) 2006-2015 OpenWrt.org
  3. # Copyright (C) 2010 Vertical Communications
  4. failsafe_netlogin () {
  5. dropbearkey -t rsa -s 1024 -f /tmp/dropbear_failsafe_host_key
  6. dropbear -r /tmp/dropbear_failsafe_host_key <> /dev/null 2>&1
  7. }
  8. failsafe_shell() {
  9. local console="$(sed -e 's/ /\n/g' /proc/cmdline | grep '^console=' | head -1 | sed -e 's/^console=//' -e 's/,.*//')"
  10. [ -n "$console" ] || console=console
  11. [ -c "/dev/$console" ] || return 0
  12. while true; do
  13. ash --login <"/dev/$console" >"/dev/$console" 2>"/dev/$console"
  14. sleep 1
  15. done &
  16. }
  17. boot_hook_add failsafe failsafe_netlogin
  18. boot_hook_add failsafe failsafe_shell