Forums -> Глюкодром -> Как передать файлы?
| Full Version

VxWorks
Есть девайс, на котором бегает Busybox 1.5.1
Кроме телнета у него ничего нет. Надо на него закинуть пару файлов, а потом стащить с десяток других файлов с него.
Вопрос - как это сделать? Файлы, в основном, текстовые, но есть и пара бинарников.

Комманд типа get/put тоже нет. Есть wget, но поднимать апач ради пары файлов меня ломает.
FiL
с телнетом может быть немного сложнее, особенно с бинарниками. Телнет слишком много чего пытается транслировать как управляющие символы.

Вот с ssh это просто -
закинуть : cat file | ssh host "cat > file"
стащить : ssh host "cat file" > file

поднимать апач не надо, вполне хватит поднятия какого-нить tinyweb ( http://www.ritlabs.com/en/products/tinyweb/ ) - вот только это не сильно поможет стащить файлы с девайса. Но вообще вещь в хозяйстве полезная.
VxWorks
ssh на девайсе тоже нет :(
А как сделать через телнет, не знаешь?
heineken man
Давай начнем с другой стороны: а что есть клиентского на девайсе для приема/передачи: ftp/tftp/scp/wget/? От самбы что нибудь?
VxWorks
Есть wget и UPnP AV клиент, что не сильно поможет.
heineken man
wget уже что-то, по крайней мере файлы можно закачать на железяку.
Обычно имеется также tftp. Часто нужен для загрузки/апгрейда фирмваре.
Идея в том, чтобы вместо того, чтобы запихивать и сливать с сервисов железки использовать клиентов на железке, чтобы запихивать и сливать сидя на железке. :rolleyes: Т.е. поднять tftp/ftp сервер на компе и put/get-ать с железки.

P.S. Глянул на сайте железки - имеется tftp client, ftpput and ftpget. Упоминается возможность установить ssh client and server. Вполне достаточно средств.

VxWorks
Busybox бывают в разной комплектации - в этой нет ничего, связанного с (t)ftp, я вчера рылся в файловой системе и ничего не нашел. Фирмварь она тащит с сайта конторы через wget, я его утащил и посмотрел в tmp вчера.
То есть, в теории, можно туда через wget засунуть ftp сервак, но я как-то никогда не работал с такими делами в линуксах.
heineken man
Т.е. аплет ftpget ([options] remote-host local-file remote-file) не вкомпилирован?
И совать через wget лучше не фтп сервер, а разные клиенты. На порядок легче задача.
VxWorks
нет, не компилирован :( И компилить тоже нечем, бо компилятор в системе не присутствует.

Чтобы засунуть клиент через wget, надо его сначала скомпилить под девайс (это какой-то ARM, но какой, черт его разберет - инфы нет).
Set
Может через tcpsvd можно?
FiL
QUOTE (VxWorks @ 29-01-2008, 03:05)
ssh на девайсе тоже нет :(
А как сделать через телнет, не знаешь?

с телнетом можно также, как и с ssh, если мне ничего не изменяет. Но вот что делать с управляющими символами я не знаю. Он явно бинарники покоцает при передаче.

На железки файло таки проще всего тянуть вгетом - поставь себе этот tinyweb и закинь файлы. А вот забрать файлы с девайса... а какого-нить кермита на железке нет? Ну или еще чего подобного, типа z-modem'a..
Set
http://www.linuxquestions.org/questions/programming-9/trying-to-copy-files-from-another...hine-using-telnet..how-191133/
VxWorks
Ничерта нет, ни кермита, ничего. И uuencode тоже нет.


МЛИН, какой я идиот! nc работает прекрасно!!!

Спасибо за подсказку! :hi:


UPD2: А как заставить виндовый nc посылать файлы, а не только принимать?

UPD3: команда типа:

nc -l -p 4000 -n 192.168.100.100 < file.bin - на винде
и
nc 192.168.100.101 4000 > file.bin

ни к чему не приводит.
FiL
брр.. если тебе надо на винде посылать, то принимать будет демон на железке. То есть слушать должна принимающая сторона. Обязательно.

на железке -
nc -l 4000 > file.bin

на винде -
nc 192.168.100.100 4000 < file.bin
VxWorks
Не работает, зараза. На железке можно задать только команду типа

nc <address> <port>

Все. Никаких -l или -L

На Винде команда типа

nc 192.168.100.101 40000 <file.bin

просто закрывается через пару секунд.

А на железке выдает такое:

# nc 192.168.100.100 40000 >file1.bin
nc: cannot connect to remote host (192.168.100.100): Connection refused

FiL
воркс, ну хоть одна из сторон должна слушать. Не могут они обе пытаться коннектиться. Если железяка слушать не умеет (что само по себе маразм), то хотя-б на винде ставь -l.
FiL
ну и, собственно, С девайса можно будет забрать через nc (винда слушает и пишет в файл), а НА девайс таки закидывать через wget (запуская на своей машине tinyweb). Потому как у меня стойкое впечатление, что со слушающей машины нихрена не передать.

А, впрочем, надо проверить, может я не прав. Может и передать можно.
VxWorks
Так прикол в том, что я не понимаю, как можно заставить nc на железке слушать порты. Виндовый, тот да, слушает. Но только для incoming transfer. А для outgoing - фиг там.

Такой вот однобокий транфер получается.

В итоге, я все-таки нашел способ передать файлы на эту фиговину - там обнаружился smbmount, так что я создал раздел на компе, специально для связи с этой фиговиной, закинул туда файлы и смонтировал этот раздел на железке. Знаю, что через задницу, но вариантов больше я не вижу.
Разве что скомпилировать под эту хрень FTP сервак и закинуть его на железку. Кстати, не знаешь какой-нибудь простой и маленький FTP сервак под линукса?
FiL
воркс, smbmount - это наименее через задницу. Работает - и не трогай :) Чем компилить фтп сервер под ARM....

а про однобокость я так и думал, что принимать может только слушающая сторона. И если слушанье у железяки не реализовано, то не судьба. Через nc только оттуда забирать.

Ну да через smb теперь можешь в обе стороны кидать без проблем. Так что проблема как-бы и решена.
VxWorks
Да, smbmount решает проблему, это точно. Но как-то неаккуратненько © :)
FiL
a чем тебе "неаккуратненько"?
если не хочется каждый раз лезть в теленет и оттуда smbmount и всякое там cp, то можешь попытаться написать скрипты дле телнета так, чтоб ты запускал скрипт на винде, а он телнетился, маунтил, копировал и унмаунтил. по идее ничего сложного.
VxWorks
Ну... в принципе ты прав :)