Загрузить файл, связанный в MySQL DB, извлечь текст и вставить в db с помощью скрипта bash?

Я хочу загрузить файл (загружайте только в том случае, если URL-адрес заканчивается определенной строкой), какой URL-адрес находится в базе данных MySQL, извлекает текст и записывает текст в базу данных, заменяя URL-адрес.
И это нужно сделать для каждой строки (около 25 тыс. Строк).

Есть ли способ сделать это с помощью сценария bash (или что-то еще, например Java)?

Сервер MySQL работает на моем Linux-корне, у меня есть полный доступ к нему. Моя настольная ОС также Linux (Linux Mint со многими настройками).

Это то, что я сделал до сих пор:

#!/bin/bash for (( i=1; i <= 5; i++)) do DBQUERY=`mysql -B -ss -uuser -ppassword -e "USE table; SELECT column FROM table WHERE pid='$i';"` if [[ $DBQUERY == *.pls ]] ; then wget -O tempfile.pls $DBQUERY while read line do if [[ $line == File1=* ]] ; then mysql -B -ss -uuser -ppassword -e "USE table; UPDATE table SET column = '${line:6}' WHERE pid = '$i';" fi done <tempfile.pls fi done 

Как я могу его защитить?

One Solution collect form web for “Загрузить файл, связанный в MySQL DB, извлечь текст и вставить в db с помощью скрипта bash?”

Чтобы быть в безопасности, вы должны смотреть на сгенерированный код, если код может быть введен.

В этой команде mysql -B -ss -uuser -ppassword -e "USE table; SELECT column FROM table WHERE pid='$i';" , вы знаете, что i – число от 1 до 5, так что все в порядке.

Но в этой команде mysql -B -ss -uuser -ppassword -e "USE table; UPDATE table SET column = '${line:6}' WHERE pid = '$i';" , вы не можете быть уверены в $ {line: 6}; вы можете представить, что он содержит одну цитату, в этом случае вам нужно заменить на две одинарные кавычки, вы также можете проверить длину меньше длины столбца в базе данных (предположим здесь 255) или обрезать данные перед заменой кавычки.

 #!/bin/bash for (( i=1; i <= 5; i++)) do DBQUERY=`mysql -B -ss -uuser -ppassword -e "USE table; SELECT column FROM table WHERE pid='$i';"` if [[ $DBQUERY == *.pls ]] ; then wget -O tempfile.pls $DBQUERY while read line do if [[ $line == File1=* ]] ; then str=${line:6:255} str=${str//\'/''} mysql -B -ss -uuser -ppassword -e "USE table; UPDATE table SET column = '$str' WHERE pid = '$i';" fi done <tempfile.pls fi done 
  • Как передать параметры 4..99 на другую функцию
  • Как копировать в две папки одновременно с помощью GNU параллельно, создавая несколько потоков?
  • Каковы надлежащие инструменты для настройки удаленной компиляции и работы (что-то вроде ideone)?
  • Запуск скрипта во время загрузки / запуска; init.d vs cron @reboot
  • Как получить номера телефонов из файла в правильном формате с помощью awk? Рабочий скрипт нуждается в настройке
  • Debian - использование TFTP в сценарии bash
  • Как я могу определить, есть ли я в текстовой области?
  • Сценарий Bash для tar - Указание проблемы
  • Как вы скрываете пароль при вызове во время команды su?
  • Избегайте сценария bash, ожидающего пользователя, введите ключ Enter
  • «Перезапустить» процесс в том же терминале?
  • Interesting Posts

    Последовательность разрыва диалогового окна

    Диапазоны массивов с пользовательским размером шага в оболочках Борна

    Поменять cron по умолчанию sendmail на почту

    Как исправление ошибок точно работает в дистрибутиве? вверх по течению против нисходящего потока

    Замена многострочных последовательных тегов одной строкой с использованием sed и игнорирование пробелов

    Есть ли способ прослушивания netcat и размещения входящих файлов в целевом каталоге?

    Как просмотреть чтение и запись из приложения

    FC16: невозможно войти в систему через LightDM или GDM (но «startx» отлично работает)

    Почему рискованно предоставлять sudo vim доступ к обычным пользователям?

    Запуск тысяч параллельных фоновых процессов в сценарии bash

    Как может команда монтирования сбой в одном окне терминала, но не в другом?

    Как я могу получить цвета для отображения в терминале (macOS Sierra)

    Получение значений из строки

    Часы, оборудование и загрузка

    Как удалить пробелы из переменных оболочки?

    Linux и Unix - лучшая ОС в мире.