현재 bash 스크립트를 사용하여 ssh를 통해 모뎀을 재부팅하려고 합니다. 설명하지 않을 이유 때문에 우분투 서버 시스템에서 부팅하고 busybox 1.21.1을 실행하는 설정으로 ssh를 접속한 다음 거기에서 모뎀으로 ssh를 접속하고 재부팅해야 합니다.
모뎀에 SSH로 연결할 때 비밀번호를 자동으로 입력하려면 비지박스 시스템이 필요합니다.
우분투 서버에서 비지박스 시스템으로 SSH를 통해 접속할 때 이를 수행하기 위해 sshpass
다음 명령을 사용합니다:
sshpass -p password ssh [email protected] 'ssh [email protected]'
이 명령을 실행하면 모뎀의 비밀번호 프롬프트가 나타납니다.
내 문제는 busybox 시스템에 사용 가능한 명령이 몇 개만 있고 그 중 어느 것도 sshpass
또는 expect
ssh 암호 프롬프트와 자동으로 상호 작용하는 유일한 두 명령이 아니라는 것입니다.
busybox 설치에 정의된 기능은 다음과 같습니다.
[, [[, addgroup, adduser, ar, arping, ash, awk, basename, blkid, bunzip2, bzcat,
cat, catv, chattr, chgrp, chmod, chown, chroot, chrt, chvt, cksum, clear, cmp,
cp, cpio, crond, crontab, cut, date, dc, dd, deallocvt, delgroup, deluser, devmem,
df, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, echo,
egrep, eject, env, ether-wake, expr, false, fdflush, fdformat, fgrep, find, fold,
free, freeramdisk, fsck, fuser, getopt, getty, grep, gunzip, gzip, halt, hdparm,
head, hexdump, hostid, hostname, hwclock, id, ifconfig, ifdown, ifup, inetd, init,
insmod, install, ip, ipaddr, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kill,
killall, killall5, klogd, last, less, linux32, linux64, linuxrc, ln, loadfont,
loadkmap, logger, login, logname, losetup, ls, lsattr, lsmod, lsof, lspci, lsusb,
lzcat, lzma, makedevs, md5sum, mdev, mesg, microcom, mkdir, mkfifo, mknod, mkswap,
mktemp, modprobe, more, mount, mountpoint, mt, mv, nameif, netstat, nice, nohup,
nslookup, od, openvt, passwd, patch, pidof, ping, pipe_progress, pivot_root,
poweroff, printenv, printf, ps, pwd, rdate, readlink, readprofile, realpath,
reboot, renice, reset, resize, rm, rmdir, rmmod, route, run-parts, runlevel, sed,
seq, setarch, setconsole, setkeycodes, setlogcons, setserial, setsid, sh, sha1sum,
sha256sum, sha3sum, sha512sum, sleep, sort, start-stop-daemon, strings, stty, su,
sulogin, swapoff, swapon, switch_root, sync, sysctl, syslogd, tail, tar, tee,
telnet, test, tftp, time, top, touch, tr, traceroute, true, tty, udhcpc, umount,
uname, uniq, unix2dos, unlzma, unxz, unzip, uptime, usleep, uudecode, uuencode,
vconfig, vi, vlock, watch, watchdog, wc, wget, which, who, whoami, xargs, xz,
xzcat, yes, zcat
비지박스 시스템에서 모뎀으로 SSH 연결을 할 때 이 비밀번호를 자동으로 입력하기 위해 무엇을 사용할 수 있는지 아는 사람이 있나요?
어떤 도움이나 아이디어라도 대단히 감사하겠습니다.
편집: 모뎀 지원 부족으로 인해 SSH 키 인증은 불가능합니다.
Edit2: 내가 묻는 질문이 타당한지 누군가가 최소한 댓글을 달고 알려줄 수 있나요? 누군가가 나를 도울 수 있는 방법을 알 수 있도록 내 문제를 명확하게 설명하려고 노력합니다. 제 질문에 혼란스러운 부분이 있거나 더 자세한 내용을 알려드릴 수 있으면 알려주시기 바랍니다.
답변1
Ubuntu 서버에 필요한 것은 다음과 같습니다 expect
(또는 Perl Expect.pm
모듈과 같은 유사한 모듈, Perl Net::SSH
모듈...또는 Python을 선호하는 경우 Python 모듈).pexpect
- 비밀번호 또는 키를 사용하여 비지박스 시스템에 연결
- 쉘 프롬프트가 나타나면 ssh 명령을 실행하여 모뎀에 액세스하십시오.
- 비밀번호 프롬프트가 표시되면 비밀번호를 보내세요.
- 모뎀에 필요한 명령을 실행하세요.
- 모뎀을 종료한 후 비지박스 서버를 종료합니다.
답변2
중간 BusyBox 시스템에 인증하기 위한 키가 있고 최종 시스템의 비밀번호가 필요한 경우 sshpass
원래 Ubuntu 시스템을 호출하고 BusyBox 시스템을 호출 하면 내부 명령을 ssh -t
위한 터미널이 있을 것입니다. ssh
비밀번호를 읽어보세요.
sshpass -p modempassword ssh -t [email protected] ssh [email protected]
BusyBox 시스템을 사용하기 위해 비밀번호도 필요한 경우 비밀번호를 두 번 다이얼해야 합니다 sshpass
.
sshpass -p busyboxpassword sshpass -p modempassword ssh -t [email protected] ssh [email protected]
어떤 이유로 연결을 설정하는 데 문제가 있는 경우 다음 두 단계를 통해 설정할 수 있습니다.
열어주요 연결BusyBox 시스템에. 이를 위해서는 클라이언트 측 지원만 필요하며 서버 측에는 특별한 것이 없습니다.
sshpass -p busyboxpassword ssh -o ControlMaster=auto -f [email protected] sleep 999999999
BusyBox 시스템에 대한 슬레이브 연결을 사용하여 모뎀에 대한 연결을 엽니다.
sshpass -p modempassword ssh -o ControlMaster=auto -t [email protected] ssh [email protected]
완료되면 다음 명령을 사용하여 기본 연결을 닫습니다.
ssh -O exit [email protected]