Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
iVale
Зарегистрирован: 11.03.2008 Сообщения: 33
|
Добавлено: 2008-03-18 14:44 pm Заголовок сообщения: |
|
|
Instruktor писал(а): | очевидно, нет коннекта к базе
уберите из строки коннекта -h127.0.0.1
пусть через сокет конектится
если не поможет то нужно разбираться с юзером и его правами на базу данных |
Пожалуйста посмотрите моё последнее сообщение, там я заменил строку и вроде как ошибка с коннектом пропала. |
|
Вернуться к началу |
|
Marcus
Зарегистрирован: 29.02.2008 Сообщения: 15
|
Добавлено: 2008-03-18 15:14 pm Заголовок сообщения: |
|
|
iVale писал(а): | Instruktor писал(а): | очевидно, нет коннекта к базе
уберите из строки коннекта -h127.0.0.1
пусть через сокет конектится
если не поможет то нужно разбираться с юзером и его правами на базу данных |
Пожалуйста посмотрите моё последнее сообщение, там я заменил строку и вроде как ошибка с коннектом пропала. |
Конечно она пропала Потому что теперь у Вас ошибка раньше, чем происходит коннект к базе НЕ УБИРАЙТЕ " ` " оттуда!
Попробуйте сделать как Вам советовал Instruktor
p.s. точную информация возьмите из config.php в блоке про настройки mysql... там то уже точно всё правильно будет |
|
Вернуться к началу |
|
iVale
Зарегистрирован: 11.03.2008 Сообщения: 33
|
Добавлено: 2008-03-18 15:24 pm Заголовок сообщения: |
|
|
Marcus писал(а): | Конечно она пропала Потому что теперь у Вас ошибка раньше, чем происходит коннект к базе НЕ УБИРАЙТЕ " ` " оттуда!
Попробуйте сделать как Вам советовал Instruktor
p.s. точную информация возьмите из config.php в блоке про настройки mysql... там то уже точно всё правильно будет |
Признаюсь не силён в кодинге, на обум ставил.
Данные mysql верные 100%.
А что говорит лог ошибки? Я про Код: | line 17: [: too many arguments |
Всё время ругается на ошибку рядом с символом [ или ]
Добавлено спустя 22 minutes 38 seconds:
1. Вернул всё в исходоное, сделал как Инструктор просил:
Код: | #!/bin/sh
# корректируем PATH
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin:/root/sbin; export PATH
my="mysql -N -uюзер -pпароль база" # обращение к mysql
lock="/var/run/p2p_hash_count.lock" # флаг блокировки
log="/var/log/p2p_hash_count.log" # лог
my_chs="cp1251" # кодировка имён файлов в mysql
sys_chs="koi8-r" # системная кодировка имён
#--------------------------------------------
test -f $lock && exit # проверяем не запущен ли уже процесс
touch $lock # ставим флаг блокировки
#--------------------------------------------
# выполнять пока есть пустые поля dc++ или ed2k
while [ `echo "select count(ID) from files where dcppLink=''" | $my` -gt 0 ]
do
row=`echo "select ID,Size,Path from files where dcppLink='' limit 1" | $my` # получаем объект
f_id=`echo $row | awk '{print $1}'` # ID
f_size=`echo $row | awk '{print $2}'` # объём в байтах
# f_path=`echo $row | awk '{print $3}' | iconv -f $my_chs -t $sys_chs` # путь
# f_name=`basename $f_path | tr " " "_" | tr -d "'" | iconv -f $sys_chs -t $my_chs` # имя файла
f_path=`echo "set names $my_chs; select Path from files where ID=$f_id" | $my`
f_name=`echo "set names $my_chs; select Name from files where ID=$f_id" | $my`
dat=`date "+%Y-%m-%d_%H:%M:%S"`
if test -f "$f_path" # проверяем есть ли доступ к файлу, если нет то всё бросаем
then
pwd
else
echo "$dat file not found: id=$f_id path=$f_path" >> $log
rm -f $lock
exit
fi
# DC++ Генерим ссылку (если нет), забиваем в базу и пишем лог.
if [ `echo "select count(ID) from files where ID=$f_id and dcppLink=''" | $my` != "0" ]
then
dcpp="magnet:?xt=urn:tree:tiger:`nice -n 5 tthsum "$f_path" | awk '{print $1}'`&xl=${f_size}&dn=${f_name}"
echo "update files set dcppLink='$dcpp' where ID=$f_id"
echo "$dat dc++ link created: id=$f_id link=$dcpp" | iconv -f $my_chs -t $sys_chs >> $log
fi
done
rm -f $lock
exit |
Вот что происходит во время запуска:
Код: | sudo sh getdclinks1.sh
/home/amigo/scripts
update files set dcppLink='magnet:?xt=urn:tree:tiger:D43RRF3ZVP3K5MV4DRXOE4DOJ37WMTNKWGAPK2A&xl=733990912&dn=XXX.2.avi' where ID=645
/home/amigo/scripts
update files set dcppLink='magnet:?xt=urn:tree:tiger:D43RRF3ZVP3K5MV4DRXOE4DOJ37WMTNKWGAPK2A&xl=733990912&dn=XXX.2.avi' where ID=645
/home/amigo/scripts
update files set dcppLink='magnet:?xt=urn:tree:tiger:D43RRF3ZVP3K5MV4DRXOE4DOJ37WMTNKWGAPK2A&xl=733990912&dn=XXX.2.avi' where ID=645
/home/amigo/scripts
update files set dcppLink='magnet:?xt=urn:tree:tiger:D43RRF3ZVP3K5MV4DRXOE4DOJ37WMTNKWGAPK2A&xl=733990912&dn=XXX.2.avi' where ID=645
/home/amigo/scripts
update files set dcppLink='magnet:?xt=urn:tree:tiger:D43RRF3ZVP3K5MV4DRXOE4DOJ37WMTNKWGAPK2A&xl=733990912&dn=XXX.2.avi' where ID=645
/home/amigo/scripts
update files set dcppLink='magnet:?xt=urn:tree:tiger:D43RRF3ZVP3K5MV4DRXOE4DOJ37WMTNKWGAPK2A&xl=733990912&dn=XXX.2.avi' where ID=645
/home/amigo/scripts
update files set dcppLink='magnet:?xt=urn:tree:tiger:D43RRF3ZVP3K5MV4DRXOE4DOJ37WMTNKWGAPK2A&xl=733990912&dn=XXX.2.avi' where ID=645
/home/amigo/scripts
update files set dcppLink='magnet:?xt=urn:tree:tiger:D43RRF3ZVP3K5MV4DRXOE4DOJ37WMTNKWGAPK2A&xl=733990912&dn=XXX.2.avi' where ID=645
/home/amigo/scripts
|
В Фильме три икса ничего не добавляется... |
|
Вернуться к началу |
|
Marcus
Зарегистрирован: 29.02.2008 Сообщения: 15
|
Добавлено: 2008-03-18 15:51 pm Заголовок сообщения: |
|
|
Это значит что скрипт работает. Но в режиме отладки. (т.е. выдаётся только строка запроса в бд)...
теперь меняем
Код: |
echo "update files set dcppLink='$dcpp' where ID=$f_id"
|
на
Код: |
echo "update files set dcppLink='$dcpp' where ID=$f_id" | $my 2>&1 >> $log
|
При этом на экране будут только строки (конкретно в Вашем случае)
и радуемся жизни |
|
Вернуться к началу |
|
iVale
Зарегистрирован: 11.03.2008 Сообщения: 33
|
Добавлено: 2008-03-18 16:02 pm Заголовок сообщения: |
|
|
Спасибо всем!
Всё работает!
Добавлено спустя 4 hours 29 minutes 19 seconds:
Закинул скрипт в крон, тот генерит ссылки, но подоброго рода:
Цитата: | 2008-03-18_23:26:49 dc++ link created: id=1677 link=magnet:?xt=urn:tree:tiger:&xl=694210560&dn=Looney.Tunes.Back.In.Action.DivX.Rus.avi
2008-03-18_23:30:03 dc++ link created: id=1672 link=magnet:?xt=urn:tree:tiger:&xl=732946432&dn=asterix.and.vikings.avi |
пути для tthsum и iconv в скрипте прописал, может быть не совсем точно, щас ещё раз проверю, т.к. вместо TTH точная сумма файла получается. |
|
Вернуться к началу |
|
Instruktor
Зарегистрирован: 29.02.2008 Сообщения: 89
|
Добавлено: 2008-03-19 06:16 am Заголовок сообщения: |
|
|
Точная сумма а байтах как раз на своём месте.
А TTH почему-то не генерится, он должен находиться между tiger: ... TTH ... & |
|
Вернуться к началу |
|
iVale
Зарегистрирован: 11.03.2008 Сообщения: 33
|
Добавлено: 2008-03-19 09:38 am Заголовок сообщения: |
|
|
Instruktor писал(а): | Точная сумма а байтах как раз на своём месте.
А TTH почему-то не генерится, он должен находиться между tiger: ... TTH ... & |
Чем может быть вызвано? Я указал полный путь до tthsum, когда скрипт запускается по крону, то процесс tthsum висит в top. |
|
Вернуться к началу |
|
Marcus
Зарегистрирован: 29.02.2008 Сообщения: 15
|
Добавлено: 2008-03-19 10:11 am Заголовок сообщения: |
|
|
iVale писал(а): |
Чем может быть вызвано? Я указал полный путь до tthsum, когда скрипт запускается по крону, то процесс tthsum висит в top. |
1. С какой периодичностью происходит запуск скрипта по крону ?
2. Дописать в скрипт запись лога в момент генерирования утилитой tthsum |
|
Вернуться к началу |
|
iVale
Зарегистрирован: 11.03.2008 Сообщения: 33
|
Добавлено: 2008-03-19 10:41 am Заголовок сообщения: |
|
|
Marcus писал(а): | iVale писал(а): |
Чем может быть вызвано? Я указал полный путь до tthsum, когда скрипт запускается по крону, то процесс tthsum висит в top. |
1. С какой периодичностью происходит запуск скрипта по крону ?
|
Первым же запуском он генерит такие ссылки. |
|
Вернуться к началу |
|
Marcus
Зарегистрирован: 29.02.2008 Сообщения: 15
|
Добавлено: 2008-03-19 10:56 am Заголовок сообщения: |
|
|
тогда надо дописывать в скрипт логирование при получении переменной $f_path, что бы убедиться, что путь определяется верно. И тоже можно сделать при работе утилиты tthsum И смотреть что напишет лог. |
|
Вернуться к началу |
|
iVale
Зарегистрирован: 11.03.2008 Сообщения: 33
|
Добавлено: 2008-03-19 14:37 pm Заголовок сообщения: |
|
|
Marcus писал(а): | тогда надо дописывать в скрипт логирование при получении переменной $f_path, что бы убедиться, что путь определяется верно. И тоже можно сделать при работе утилиты tthsum И смотреть что напишет лог. |
Можно дать пример? Я сделал, но ничего путного не увидел, всё создаётся как и раньше.
К каким переменным пути нужно ещё прописать? Помимо tthsum,iconv?
Mysql вроде подхватывается кроном. |
|
Вернуться к началу |
|
Diver
Зарегистрирован: 09.03.2008 Сообщения: 96
|
Добавлено: 2008-04-02 21:24 pm Заголовок сообщения: апостроф |
|
|
Не хэшируются файлы в именамх которых содержатся апостроф "'".
Код: | ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's Chest.DVDRip.2006.avi' where
ID=2509' at line 1 |
В логах повторяется это:
Код: | 2008-04-03_01:04:16 dc++ link created: id=2509 name=Pirates of the Caribbean Dead Man's Chest.DVDRip.2006.avi link=J5PKIXYXPC25NYDP6XNDJK2PRLXFDJXVNIG5JHQ |
Возможно ли в скрипте экранировать этот символ? |
|
Вернуться к началу |
|
Marcus
Зарегистрирован: 29.02.2008 Сообщения: 15
|
Добавлено: 2008-04-03 07:10 am Заголовок сообщения: |
|
|
Я так понял что ошибка на последней стадии, когда заносится в базы ссылка.
попробуйте в строке
Код: |
echo "update files set dcppLink='$dcpp' where ID=$f_id"
|
изменить следующее
|
|
Вернуться к началу |
|
Vlamos
Зарегистрирован: 15.03.2008 Сообщения: 7
|
Добавлено: 2008-04-03 21:13 pm Заголовок сообщения: |
|
|
Не могу понять в чем проблема.
Юникс генерит одно TTH, а клиент FlylinkDC++ совсем другое значение
В итоге фильм не находит. В чем может быть причина такого различия? |
|
Вернуться к началу |
|
Diver
Зарегистрирован: 09.03.2008 Сообщения: 96
|
Добавлено: 2008-04-10 14:31 pm Заголовок сообщения: |
|
|
Marcus писал(а): | Я так понял что ошибка на последней стадии, когда заносится в базы ссылка.
попробуйте в строке
Код: |
echo "update files set dcppLink='$dcpp' where ID=$f_id"
|
изменить следующее
|
Спасибо, помогло! |
|
Вернуться к началу |
|
|