- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
#!/bin/bash
CODE='timezone.txt'
WDIR="dl-${CODE}"
TGTDIR="/etc/puppet/modules/nginx/files/etc/nginx/maxmind/"
URL='http://www.maxmind.com/timezone.txt'
mkdir "${WDIR}"
cd "${WDIR}"
wget ${URL} -O "${CODE}"
find -name "${CODE}" | while read F
do
chown root:root -vf "${F}"
chmod -vf 644 "${F}"
mv -vf "${F}" "${TGTDIR}"
TMPDIR=`dirname "${F}"`
if [[ ${TMPDIR} == '.' || ${TMPDIR} == '..' || ${TMPDIR} == '/' ]]
then
# root's rm -rf safety
continue
fi
echo rm -rfv "${TMPDIR}"
rm -rfv "${TMPDIR}"
done
Jlou_6JlblKAHAX 12.10.2022 18:01 # −6
MAPTbIwKA 13.10.2022 16:35 # −7
* нафига find скачанного файла? Может быть realpath хотя бы?
* CODE лучше бы передавать аргументом ( ане через глобальную переменную окруженмя)
* на 14 строчке лучше бы проверить, что файл есть
* защита на 19 строке -- странная. А если там ``/etc/`` ? А если ``~`` ?
* ${TMPDIR} лучше всегда брать в кавычки если уж по канонам
Stallman 02.11.2022 22:12 # −7
...тут бы точно не был лишним
>CODE='timezone.txt'
>WDIR="dl-${CODE}"
Скрипт оперирует относительными путями, что намекает, что скрипт рассчитывает быть вызванным из определенной директории. Каков будет багор, если в $PWD будет, скажем, /sys? Всё выглядит так, что текущая директория здесь используется как временная, так что можно было условиться использовать /tmp по её прямому назначению, тем самым оперировать абсолютными путями и избавиться от хаков с find / realpath и root's rm -rf safety
>chown root:root -vf "${F}"
>chmod -vf 644 "${F}"
А как такое может быть, что файл создался wget'ом с неправильными правами? Защита от предыдущего запуска скрипта от неверного пользователя?
>if [[ ${TMPDIR} == '.' || ${TMPDIR} == '..' || ${TMPDIR} == '/' ]]
Микродоёбка: можно избавиться от башизма, будет выглядеть чуть грязнее, но если на портабельность этого говна похуй, то и ладно
if [ "$TMP" = 'aaa' ] || [ "$TMP" = 'bbb' ] ... etc
guest6 02.11.2022 22:19 # −7
Это плохо, да
>, так что можно было условиться использовать /tmp
``mktemp(1)``
>А как такое может быть, что файл создался wget'ом с неправильными правами?
``umask(2)``, ``apropos umask``
>>ожно избавиться от башизма, будет выглядеть чуть грязнее, но если на портабельность этого говна похуй,
Если на портабельность похуй, то зачем избавляться от башизма?:)
guest6 15.02.2023 23:29 # 0
нет, не похуй
guest6 02.11.2022 23:51 # −7
Soul_re@ver 03.11.2022 00:48 # −7
guest6 03.11.2022 01:06 # −7
Второй умеет выпаршивать тугрики из строк, а первый использует его чтобы из стрима читать
guest6 03.11.2022 01:29 # −7
inkanus_gray 03.11.2022 02:18 # −7