私は現在bashスクリプトを使ってsshを介してモデムを再起動しようとしています。説明しない理由で、Ubuntuサーバーシステムから起動し、busybox 1.21.1を実行する設定でsshを接続し、そこからモデムにsshを接続して再起動する必要があります。
モデムにSSHで接続するときにパスワードを自動的に入力するには、ビジボックスシステムが必要です。
UbuntuサーバーからビジボックスシステムにSSH経由で接続するときにこれを行うには、sshpass
次のコマンドを使用します。
sshpass -p password ssh [email protected] 'ssh [email protected]'
このコマンドを実行すると、モデムのパスワードプロンプトが表示されます。
sshpass
私の問題は、busyboxシステムで利用可能なコマンドがいくつかあり、それらのどれもまたはexpect
sshパスワードプロンプトと自動的に対話する唯一の2つのコマンドではないことです。
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
(またはPerlExpect.pm
モジュールなどの同様のモジュール、PerlNet::SSH
モジュール...またはPythonを好む場合はPythonモジュール)。pexpect
- パスワードまたはキーを使用してビジボックスシステムに接続する
- シェルプロンプトが表示されたら、sshコマンドを実行してモデムにアクセスします。
- パスワードプロンプトが表示されたら、パスワードを送信してください。
- モデムに必要なコマンドを実行してください。
- モデムをシャットダウンした後、ビジボックスサーバーをシャットダウンします。
答え2
中間のBusyBoxシステムに認証するためのキーがあり、エンドシステムのパスワードが必要な場合は、元のsshpass
Ubuntuシステムを呼び出してBusyBoxシステムを呼び出すと、内部コマンド用のssh -t
端末があります。ssh
パスワードをお読みください。
sshpass -p modempassword ssh -t [email protected] ssh [email protected]
BusyBoxシステムを使用するためのパスワードも必要な場合は、パスワードを2回ダイヤルする必要がありますsshpass
。
sshpass -p busyboxpassword sshpass -p modempassword ssh -t [email protected] ssh [email protected]
何らかの理由で接続を確立できない場合は、次の2つの手順で設定できます。
開く主な接続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]