@gadzhikuliev

Почему tftpd-hpa копирует файлы в неуказанный каталог?

Странное явление увидел. Написал скрипт для резервного копирования конфигурационных файлов сетевого оборудования. При ручном запуске скрипта скрипт копирует всё туда, куда указано, но когда написал правило в cron от root, то скрипт стал копировать файлы прямо в /root, создавая уже там папку, хотя папка tftp в другом месте прописана. Папка называется именем даты срабатывания скрипта.

Правило в cron от root, так как есть необходимость после редактирования конфига перезапускать службу tftp:
0 0 * * 6 /home/tftp/backup
Конфиг tftp:
TFTP_USERNAME="tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure --create"
TFTP_DIRECTORY="/home/tftp/2019-09-07"

Что в домашнем каталоге root:
tftp@tftp:~$ sudo ls -l /root/
total 16
drwxrwxrwx 2 tftp tftp 4096 Aug 17 00:00 2019-08-17
drwxrwxrwx 2 tftp tftp 4096 Aug 24 00:00 2019-08-24
drwxrwxrwx 2 tftp tftp 4096 Aug 31 00:00 2019-08-31
drwxrwxrwx 2 tftp tftp 4096 Sep  7 00:00 2019-09-07

Обратите внимание: самый последний каталог 2019-09-07 совпадает с параметром TFTP_DIRECTORY="/home/tftp/2019-09-07". То есть метод редактирования конфига сработал правильно.

Что в каталоге пользователя после речного запуска скрипта:
tftp@tftp:~$ ls -l
total 8
drwxrwxrwx 2 tftp tftp 4096 Sep  1 08:27 2019-09-01
-rwxrwxrwx 1 tftp tftp 2983 Aug 26 03:22 backup


Два метода из скрипта, которые отвечают за конфиг tftp:

# Каталог по умолчанию для TFTP
folder = str(datetime.date.today())
param = '"/home/tftp/' + folder + '"'

# Редактирование конфигурационного файла TFTP-сервера с учётом изменения каталога по умолчанию. Каталог именуется по текущей дате
def edit():
    str1 = 'TFTP_USERNAME="tftp"'
    str2 = 'TFTP_ADDRESS="0.0.0.0:69"'
    str3 = 'TFTP_OPTIONS="--secure --create"'

    with open('/etc/default/tftpd-hpa') as cfg:
        for line in cfg:
            if line.startswith('TFTP_DIRECTORY'):
                break
    sett = line.split('=')[1].strip()
    line = line.replace(sett,param)

    with open('/etc/default/tftpd-hpa', 'w') as cfg:
        cfg.write(str1)
        cfg.write('\n' + str2)
        cfg.write('\n' + str3)
        cfg.write('\n' + line)


# Здесь создаётся папка, куда складываются конфиги, и перезапускается служба TFTP
def tftp_start():
    os.system('cd /home/tftp/')
    os.mkdir(folder)
    os.system('chown tftp:tftp ' + folder)
    os.system('chmod 777 ' + folder)
    os.system('systemctl restart tftpd-hpa')


Почему tftp игнорирует путь в конфиге?
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы