我想做的是通过 telnet 连接并下载数据库,但我找不到方法,我用 python 尝试过,但它只关闭连接,所以我想知道是否有办法使用 bash 脚本来完成
当然,发生的情况是它是一个条目检查器,连接到它的唯一方法是通过 telnet,我知道它不是最好的,但它就是这样。
我设法通过期望解释器建立连接,现在我只需在设备上移动即可执行此命令
这是我的代码
#!/usr/bin/expect
set timeout 20
set name 192.168.1.169
set user "root"
set passwd "solokey"
spawn telnet $name
expect "ZMM100 login: "
send "$user\r"
expect "Password: "
send "$passwd\r"
expect "#"
send "cd /mnt/mtdblock/data/ \r"
expect "#"
send "rm -rf ZKDB.db.bak \r"
expect "#"
send "cp ZKDB.db ZKDB.db.bak \r"
expect "#"
send "cat ZKDB.db.bak | nc -l -p 6666 \r"
expect "#"
答案1
我知道 telnet 不是传输服务,但它是能够访问数据的唯一选择,我保留了代码,以防它对某人有用,这样通过 telnet 访问生物识别检查器,我们下载了它的数据库
#!/usr/bin/expect
set timeout 20
set name 192.168.1.169
set user "root"
set passwd "solokey"
spawn telnet $name
expect "ZMM100 login: "
send "$user\r"
expect "Password: "
send "$passwd\r"
expect "#"
send "cd /mnt/mtdblock/data/ \r"
expect "#"
send "rm -rf ZKDB.db.bak \r"
expect "#"
send "cp ZKDB.db ZKDB.db.bak \r"
expect "#"
send "cat ZKDB.db.bak | nc -l -p 6666 \r"
expect "#"
已经只在客户端,我们执行
nc 192.168.1.169 6666 <ZKDB.db.bak
答案2
Telnet 是远程命令执行器,不适合作为 FTP 客户端。
你能做的就是让网猫侦听本地端口,然后 telnet 到远程主机,并使用 netcat 在本地端口上传输远程文件,并将输出重定向到本地文件。
在您的本地主机上:
nc -l -p <port> > <output_file>
在远程计算机上,使用 telnet 执行以下命令:
nc -w 3 <local_host_ip> <port> < <input_file>
另外,由于您无法使用 ssh、ftp,因此您可以公开 http 服务器(如果已安装,则使用 python SimpleHTTPServer)或远程服务器上的任何 http 服务器,然后使用 wget 下载文件。
在远程主机上:
cd <to_the_directory_to_expose>
python -m SimpleHTTPServer
在本地机器上:
wget http://<remote_host_ip>:8000/<filename>