Download e caricamento di file tramite sessione telnet


15

Ho un dispositivo di assistenza in esecuzione Linux OS. Posso connettere questo dispositivo tramite sessione telnet. Ci sono alcuni file nel dispositivo che vorrei scaricare e caricare con nuovi file. Come posso fare ciò? Ho una conoscenza molto bassa del sistema operativo Linux. Per favore, potresti aiutarmi!

inserisci qui la descrizione dell'immagine


Quanti file vuoi trasferire? Si può incollare uscita da qualche parte di busybox --helpe ls -l /bine ls -l /usr/bin, per favore.
jofel,

in realtà voglio cambiare lo sfondo del desktop di questo dispositivo di presenza e voglio caricare il logo della nostra azienda nel dispositivo. Tali opzioni non sono disponibili nel menu del dispositivo (ho già richiesto questa opzione al fornitore). Quindi l'ho collegato tramite sessione telnet e ho trovato desktop.jpg e altri file di immagine nel dispositivo. Ora voglio ottenere questi file sul mio sistema locale. e dopo aver verificato lo stesso caricherò le mie immagini desiderabili nel dispositivo. Quindi aggiornerà l'immagine del dispositivo in base alle mie immagini desiderabili. Voglio cambiare almeno l'immagine desktop che è disponibile nel dispositivo in / mnt / mtdblock / image
PRdeep Kumawat,

Se desideri aggiungere informazioni la prossima volta, modifica la domanda anziché aggiungere commenti.
jofel,

Risposte:


12

Questo dipende da quali strumenti sono installati sul dispositivo client / supportati dal kernel.

Metodi possibili per il trasferimento di file (non ordinati):

  • ssh / sftp
  • codifica dei file binari in formato visualizzabile con base64 / uuencode e quindi copia da / nella finestra del terminale telnet.
  • tramite una semplice connessione tcp con netcato socato con bashe / dev / tcp
  • caricare / scaricare con wgeto curlda un server Web
  • server ftp con un client ftp da riga di comando
  • montaggio samba o nfs

Leggi Trasferimento di file semplice e Come ottenere file su un host quando tutto ciò che hai è una console seriale? per più possibilità.


Copia desktop.jpgdal dispositivo al PC con il metodo netcat / nc:

Sul PC, disabilitare temporaneamente (o riconfigurare se possibile) qualsiasi firewall ed eseguire

netcat -l -p 10000 > desktop.jpg

e sul dispositivo

busybox nc A.B.C.D -p 10000 < desktop.jpg

dove è necessario sostituire ABCD con l'indirizzo IP del PC. Non appena il trasferimento ha avuto esito positivo, il processo netcat sul PC dovrebbe interrompersi automaticamente. Altrimenti, qualcosa non va e puoi fermarloCtrl+C

Per l'altra direzione, basta scambiare <e >su entrambi i lati. Effettua prima un backup dell'originale desktop.jpg( cp desktop.jpg desktop_orig.jpg).


Ho provato l'utilità WinSCP e ho provato a connettere il dispositivo usando il protocollo ftp / sftp / scp. ma non si sta connettendo. Sono in grado di connettere il dispositivo tramite il comando telnet e di vedere i file che voglio ottenere e caricare di nuovo nel dispositivo.
PRdeep Kumawat,

Probabilmente il tuo dispositivo non ha un server ssh o ftp in esecuzione.
jofel,

Beh, non lo so. Esiste un altro modo per ottenere / caricare file da quel dispositivo?
PRdeep Kumawat,

È inoltre possibile utilizzare szper inviare i file tramite il terminale. Ne avrai bisogno su entrambi i lati.
slm

@PRdeepKumawat Ho esteso la risposta con un esempio.
jofel,

6

Non ho ssh o ftp (o ecc) sul dispositivo.

Quindi, lo faccio dopo:

  1. telnet a.b.c.d | tee telnet.log
  2. accedi e vai al file
  3. cat file.txt
  4. chiudi sessione (chiudo il riquadro tmux)
  5. cancella telnet.logdalla spazzatura

Dovrebbe essere facile scrivere utility per scaricare / caricare file su Telnet


1

Prova con rcpcomando.

Utilizzare man rcpper ulteriori informazioni nel caso si desideri automatizzare i trasferimenti.

A proposito, sai che questo è molto insicuro , giusto?


1

Ho appena caricato un file del firmware di ~ 7 Kb su un sistema embedded Linux basato su BusyBox tramite la porta seriale.

Nessuna rete, nessuna utilità di trasferimento file; nessun programma di utilità Base64 o nulla di utile in remoto sul dispositivo.

Sull'host, ho banalmente codificato un firmware nel seguente formato; una sorta di hex-dump costituito da letterali shell combinati con printfcomandi:

printf "\xDE\xAD\xBE\xEF\x...\xF0"
printf "\xCA\xFE\x33\xE1\x...\xD3"

fondamentalmente printfcomandi di shell con \xsequenze di escape che printfinterpreta. Sul dispositivo ho fatto:

device $ cat > firmware.sh

quindi ha utilizzato il minicomfile ASCII di send ( Ctrl-AS) per inviare questo file all'host. Avrei potuto semplicemente usare copia e incolla, poiché la quantità di dati è piccola.

Quindi, contrassegnato come eseguibile ed eseguito lo printfscript:

device $ chmod a+x firmware.sh
device $ ./firmware.sh > firmware.bin

Controllato usando BusyBox md5sumche il firmware.binchecksum sul dispositivo corrisponde all'immagine del firmware originale sull'host.

PS La sintassi della doppia virgoletta della shell passa alla \xlettera perché non è una sequenza di escape riconosciuta; quindi non dobbiamo raddoppiare le barre rovesciate.


0

@jofel e tutti gli altri, grazie mille per la cortese assistenza. Penso che il dispositivo abbia un sistema operativo personalizzato installato in quanto riconosce solo alcuni comandi specifici di Linux. netcat non è riconosciuto dal dispositivo. Tuttavia oggi ho avuto successo nel trasferire il file usando il comando tftp. Ho sostituito con successo il file desktop.jpg con questo comando. Quello che ho fatto è stato creare il server tftp sul sistema a finestre. accedi tramite telnet sul dispositivo ed esegui questi comandi:

scarica il file tftp -l -p tftp -l desktop.jpg - 192.168.0.249 69

carica il file tftp -l desktop.jpg -g 192.168.0.249 69


0

L'ho fatto ora con questi metodi:

Crea server ftp (installando solerwinds) sul sistema a finestre. accedi tramite telnet sul dispositivo ed esegui questi comandi:

Per scaricare un file:

tftp -l <FileName> -p <TFTP Server IP> <Port No of TFTP>

Esempio:

tftp -l desktop.jpg -p 192.168.0.249 69

o per caricare il file:

tftp -l <FileName> -g <TFTP Server IP> <Port No of TFTP>

Esempio:

tftp -l desktop.jpg -g 192.168.0.249 69

il percorso predefinito del file tftp è C:\TFTP-Root


-1

Uso il seguente metodo per scaricare piccoli file binari via telnet nella mia finestra di Windows:

  1. esegue hexdump -v -e '16 / 1 "% 02x" 'myfile.bin
  2. copia dump esadecimale dallo schermo
  3. incolla il dump esadecimale in questo strumento online per creare un file binario: http://tomeko.net/online_tools/hex_to_file.php?lang=en

Non sono sicuro del tuo link in # 3!

3
@Goro Il link in questo caso non è una spiegazione che può essere citata, è uno strumento online essenziale per la risposta. Sarebbe meglio avere un programma locale per tale compito.
RalfFriedl,

Grazie @RalfFriedl. Ho modificato la mia risposta per chiarimenti.
Igor Zelaya,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.