- DESCRIPTION¶
- OPTIONS¶
- COMMANDS¶
- NOTES¶
- AUTHOR¶
- SEE ALSO¶
- Установка TFTP сервера (tftpd) в Ubuntu Linux
- Установка сервера tftpd и службы openbsd-inetd
- Настройка tftpd
- Перезапуск службы inetd
- Проверка работы TFTP сервера, использование TFTP клиента
- TFTP
- Server
- tftp-hpa
- URL rewriting
- Debugging
- atftp
- uftpd
- dnsmasq
- Client
- tftp-hpa
- atftp
- curl
- Put file with tftp client in Linux
- 2 Answers 2
DESCRIPTION¶
tftp is a client for the Trivial file Transfer Protocol, which can be used to transfer files to and from remote machines, including some very minimalistic, usually embedded, systems. The remote host may be specified on the command line, in which case tftp uses host as the default host for future transfers (see the connect command below.)
OPTIONS¶
-4 Connect with IPv4 only, even if IPv6 support was compiled in. -6 Connect with IPv6 only, if compiled in. -c command Execute command as if it had been entered on the tftp prompt. Must be specified last on the command line. -l Default to literal mode. Used to avoid special processing of ‘:’ in a file name. -m mode Set the default transfer mode to mode. This is usually used with -c. -R port:port Force the originating port number to be in the specified range of port numbers. -v Default to verbose mode. -V Print the version number and configuration to standard output, then exit gracefully.
COMMANDS¶
Once tftp is running, it issues the prompt tftp> and recognizes the following commands:
? command-name. help command-name. Print help information ascii Shorthand for mode ascii. binary Shorthand for mode binary. connect host [port] Set the host (and optionally port) for transfers. Note that the TFTP protocol, unlike the FTP protocol, does not maintain connections between transfers; thus, the connect command does not actually create a connection, but merely remembers what host is to be used for transfers. You do not have to use the connect command; the remote host can be specified as part of the get or put commands. get file
get file1 file2 file3. Get a file or set of files from the specified sources. A remote filename can be in one of two forms: a plain filename on the remote host, if the host has already been specified, or a string of the form host:filename to specify both a host and filename at the same time. If the latter form is used, the last hostname specified becomes the default for future transfers. Enable literal mode to prevent special treatment of the ‘:’ character (e.g. C:\dir\file). literal Toggle literal mode. When set, this mode prevents special treatment of ‘:’ in filenames. mode transfer-mode Specify the mode for transfers; transfer-mode may be one of ascii (or netascii) or binary (or octet.) The default is ascii. put file
put file1 file2 file3. remote-directory Put a file or set of files to the specified remote file or directory. The destination can be in one of two forms: a filename on the remote host, if the host has already been specified, or a string of the form host:filename to specify both a host and filename at the same time. If the latter form is used, the hostname specified becomes the default for future transfers. If the remote-directory form is used, the remote host is assumed to be a UNIX system or another system using / as directory separator. Enable literal mode to prevent special treatment of the ‘:’ character (e.g. C:\dir\file). quit Exit tftp. End-of-file will also exit. rexmt retransmission-timeout Set the per-packet retransmission timeout, in seconds. status Show current status. timeout total-transmission-timeout Set the total transmission timeout, in seconds. trace Toggle packet tracing (a debugging feature.) verbose Toggle verbose mode.
NOTES¶
The TFTP protocol provides no provisions for authentication or security. Therefore, the remote server will probably implement some kinds of access restriction or firewalling. These access restrictions are likely to be site- and server-specific.
AUTHOR¶
This version of tftp is maintained by H. Peter Anvin . It was derived from, but has substantially diverged from, an OpenBSD source base, with added patches by Markus Gutschke and Gero Kulhman.
SEE ALSO¶
Установка TFTP сервера (tftpd) в Ubuntu Linux
TFTP — простой протокол для передачи файлов по сети, использует протокол UDP (по порту 69), не поддерживает аутентификацию и шифрование. TFTP часто используется для загрузки файлов (прошивок, конфигураций) на устройства (маршрутизаторы, мини-АТС и другие), но его можно использовать и для простой пересылки файлов по сети между компьютерами. Для Linux доступно несколько TFTP демонов (серверов): tftpd, atftpd, tftpd-hpa. Вы можете использовать любой из них. Я расскажу, как устанавливать tftpd.
Помимо tftpd нужно будет установить службу inetd. inetd — представляет собой сетевую службу, которая обрабатывает входящие соединения (TCP, UDP) и запускает соответствующую программу для обработки запроса. Я буду использовать службу openbsd-inetd. Есть еще служба xinetd, вы можете ее использовать, но настраивается она несколько иначе.
Установка сервера tftpd и службы openbsd-inetd
Установим сервер tftpd и openbsd-inetd, для этого выполним команду:
sudo apt-get install openbsd-inetd tftpd tftp
По завершении установки вы увидите сообщения вида:
. Настраивается пакет openbsd-inetd (0.20080125-4ubuntu2) . * Stopping internet superserver inetd [ OK ] * Not starting internet superserver: no services enabled Настраивается пакет tftpd (0.17-17ubuntu1) .
Настройка tftpd
По умолчанию TFTP сервер настроен на использование директории /srv/tftp. Мы настроим TFTP сервер так, чтобы он использовал для работы директорию /tftpboot. В этой директории будут храниться файлы, которые мы можем скачать с сервера или же закачать в нее. Отредактируем файл /etc/inetd.conf.
В файле найдите строки вида:
#:BOOT: TFTP service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
Аргумент /srv/tftp команды in.tftpd указывает на каталог в котором будут храниться файлы TFTP сервера. Заменим /srv/tftp на /tftpboot.
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot
Создадим директорию /tftpboot:
sudo chown -R nobody /tftpboot
Перезапуск службы inetd
Чтобы новые настройки вступили в силу, перезапустим службу inetd:
sudo /etc/init.d/openbsd-inetd restart
На этом установка TFTP сервера завершена, проверим его работу.
Проверка работы TFTP сервера, использование TFTP клиента
Для начала установим TFTP клиент, чтобы можно было подключаться к TFTP северу. Для установки TFTP клиента выполните в терминале команду:
Теперь создадим на сервере в директории /tftpboot какой-нибудь файл, например, myfile. Для создания файла myfile и записи в него текста «This is my file» выполните в терминале команду:
echo This is my file > /tftpboot/myfile
Теперь мы можем запустить TFTP клиент командой tftp. Команда tftp принимает в качестве параметра IP адрес сервера. Если вы запускаете клиент на локальном компьютере, то укажите IP адрес 127.0.0.1, если же на удаленном компьютере, то укажите IP адрес сервера.
Когда клиент запустится, вы попадете в режим ввода команд для клиента TFTP. Выполните команду get myfile, которая означает получить файл с именем myfile с сервера.
В случае, если вы все сделали правильно, файл myfile загрузится с TFTP сервера. Для выхода из TFTP клиента введите команду quit.
TFTP
The Trivial File Transfer Protocol (TFTP) provides a minimalistic means for transferring files. It is generally used as a part of PXE booting or for updating configuration and firmware on devices which have limited memory such as routers, IP phones and printers.
Server
There are several TFTP server implementations, some of which are listed below.
Note: Make sure not to start different TFTP implementations at the same time. They will fail with an error got more than one socket , because only one may listen to the default TFTP port 69 .
tftp-hpa
To modify service parameters edit /etc/conf.d/tftpd .
URL rewriting
This server includes a useful URL rewriting feature via the —map-file option ( —mapfile in some versions). It allows requests to be altered via regular expressions so the files on the server do not have to match the view the client sees, and different files can be returned to different clients even if they request the same file.
Configure a map by adding —map-file /etc/tftpd.map to /etc/conf.d/tftpd and creating a file such as this:
# Add the remote IP address as a folder on the front of all requests. r ^ \i/
This example file will result in each TFTP request being prefixed with the remote IP address. For example if the machine at 192.168.0.1 requests «boot.bin» and the TFTP server root is /srv/tftp then the file /srv/tftp/192.168.0.1/boot.bin will be returned (or /srv/tftp/::ffff:192.168.0.1/boot.bin if the server is listening on an IPv6 port).
The available map file options are documented in in.tftpd(8) § FILENAME REMAPPING .
Debugging
The —verbosity 5 option can be used to turn on all debugging messages. This is very useful for diagnosing why a machine will not successfully boot from the network, as the debug messages list all requests for files, whether rewrite rules were used, where the files were read from on the filesystem and whether the request was successful or not.
It is not possible to log messages to stdout/stderr, as only syslog is supported. This means the messages can be viewed with journalctl or similar.
atftp
To modify service parameters edit /etc/conf.d/atftpd .
uftpd
uftpd AUR is a simple (T)FTP server that can be run from the command line:
# uftpd -n -o ftp=0,tftp=69 /tmp/tftp
The option -o ftp=0 disables the FTP server and only runs TFTP. The server runs in read-only mode by default and passing -o writable allows clients to put files on the server. The -o tftp=69 is redundant in the case of default port, but shows a way to select a different one.
dnsmasq
Client
tftp-hpa
Install tftp-hpa and then tftp your day away!
atftp
The package atftp contains both a server and a client with interactive and batch mode. The client binary is atftp and supports both getting and putting files.
curl
Standard curl has an ability to connect to a TFTP server and upload a file via:
$ curl -o DESTINATION tftp://HOST/file
Where file is relative to the TFTP root directory.
- This page was last edited on 27 June 2022, at 23:24.
- Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.
- Privacy policy
- About ArchWiki
- Disclaimers
Put file with tftp client in Linux
I am going to put a new ROM file on a network attached instrument and I need to use tftp. Does anyone know how to do this? I am going to upload two different files and they will go into separate folders.
2 Answers 2
It is probably best to use the TFTP server (or «service» in MS parlance) that is «native» to the operating system distribution on which you wish to run the TFTP server.
If you are using Ubuntu, try this article by David Sudjiman.
If you are using Debian, try this Nixcraft article.
If you are using CentOS, RHEL or Fedora try this blog post.
If you are using MS Windows, try TFTPD32. This isn’t a «native» server in the sense of being in the Windows distribution, but it is a commonly used TFTP server.
If the device that you are attaching to the network is itself a TFTP server and you need to upload a file to that server using a TFTP client, then you need to find out
You might also need the port number on which the devices TFPT server is listening if it is not the TFTP well-known (standard) port, port 69.
If the device configures itself using DHCP from a server on your network then you can look at the DHCP service log files to see what its IP address is. Another possibility is that the device configures an ad-hoc IP network. So you need to have some documentation about the device to know how it configures itself.
Most of the above mentioned TFTP server packages also install TFTP clients. If you don’t want to install the servers then some distribution have stand-alone TFPT clients, but they are usually not installed as part of the standard installation so you will have to install them manually.
Once you know the IP address of the device and the name of the file that it is expecting to receive, you should be able to upload the file to the device by using a command like
tftp 192.168.1.1 -c put myfile theirfile
Since the tftp default transfer mode is ASCII and you are uploading a ROM, the command should probably be
tftp 192.168.1.1 -m binary -c put myfile theirfile
Where «myfile» is the name of the file you wish to upload and «theirfile» is the name that the file should have on the device. You might also want to use the «-v» command parameter so that if something goes wrong you can see what it was:
tftp -v 192.168.1.1 -c put myfile theirfile
If the server is running on another port, say 8069, then the command syntax would be
tftp -v 192.168.1.1 8069 -c put myfile theirfile
If the local file already has the correct name, then the command is simply
tftp -v 192.168.1.1 -c put myfile