Всем доброго времени суток!!!)
Есть вроде маленькая проблем ка, но ни как ее ни могу уже долго решить, а по времени решения ее уже "ГОРИТ"....
Запускаю свой скрипт, соединение прошло успешно, но с офисом не соединился для связи использую данную строку:
............................................................
echo "Соединяемся с сервером ... "
COMA_START_FUSE='sshfs '$NAME_USER'@85.###.###.253:/home/user/change /home/'$NAME_USER'/change -o nonempty'
# echo $COMA_START_FUSE
if !(test -d /home/$NAME_USER/change/magtest) ;then
if ! ( $COMA_START_FUSE ) ; then
my_kill
err_connect
fi
fi
в этом месте скрипт с начало встал, подождал минут 10, вырубил терминал;
запустил еще раз на выполнение, интернет подключился опять;
дальше он мне выдал connect reset by peer, не вопрос перезапустим)- все родной для только для тебя);
запустил еще раз на выполнение, интернет подключился опять, жду 10 минут все стоит на одном месте..
Ладно идем дальше:
подключаем через терминал ручками:
ifup ppp0
все завелось
подключаемся через ssh
ssh user@IP-адрес ---- ключи в директории клиента (/home/user/.ssh/id_rsa.pub) и на сервере(home/user/.ssh/authorized_keys)присутствуют..
Ответ на команду долгое зависание...
Запустил так еще раз
ssh -v user@IP-адрес (-v ключ что бы видеть детально подсоединение)
Либо сразу пишет Connection closed by "мой ip", либо запрашивает пароль, ввожу и опять Connection closed by "мой ip", хотя не должен же, ключи присутствуют..
Пытаюсь просто без скрипта выполнить, предварительно конечно установив связь с интернетом:
sshfs '$NAME_USER'@85.###.###.223:/home/user/change /home/'$NAME_USER'/change -o nonempty'
выдает-
read: Connection reset by peer
Да и еще 1 нюанс ip-ник к которому подсоединяюсь это статический адрес--естественно при конекте он с начало заходит на модем, а потом уже на мой сервер убунты, но проброску порта сделана норм.
В чем проблема?
Через фтп если делать то мне надо будет писать писать скрипт на передачу фалов с фтп на нужный каталог удаленного ПК, откуда уже 1с автоматом забирает, потом отгружает обработку данных обратно на каталог предыдущий, и тут опять писать скрипт на отправку из этого каталога на фтп, потом уже ДК будет забирать от туда данные....
По моему удаление геморроя через задний проход..
Форумчане выручайте!!!
Вызов сриптов с правами root
По скрипту:
— первой строкой принято указывать что-то вроде #!/bin/bash, хотя вы, вероятно, показали лишь часть скрипта;
— в строке, где COMA_START_FUSE, с кавычками явно напутали;
—
if !(test -d /home/$NAME_USER/change/magtest) ;then
if ! ( $COMA_START_FUSE ) ; then
конструкция странная, да и с пробелами что-то не в порядке;
— сначала настройте обычное подключение по ssh, чтобы быть уверенным, что с ним нет проблем.
хотя вы, вероятно, показали лишь часть скрипта;
ессно, определения функций нет. вот этих:
my_kill
err_connect
Форумчане выручайте!!!
телепаты в отпуске.
сначала настройте обычное подключение по ssh, чтобы быть уверенным, что с ним нет проблем.
не надо читать через строчку;
для тех кто на бронепоезде еще раз
Ладно идем дальше:
подключаем через терминал ручками:
ifup ppp0
все завелось
подключаемся через ssh
ssh user@IP-адрес ---- ключи в директории клиента (/home/user/.ssh/id_rsa.pub) и на сервере(home/user/.ssh/authorized_keys)присутствуют..
Ответ на команду долгое зависание...
Запустил так еще раз
ssh -v user@IP-адрес (-v ключ что бы видеть детально подсоединение)
Либо сразу пишет Connection closed by "мой ip", либо запрашивает пароль, ввожу и опять Connection closed by "мой ip", хотя не должен же, ключи присутствуют..
Ладно проехали, спустя долгие страдания))..все таки соединился через ssh!
Попытался монтировать удаленную файловую систему через sshfs, то же получилось,
хз, но до этого месяц мучился, топтался на месте не мог подсоединится...
Мжб, было дело в модеме, но на балансе были деньги и до этого и настроен он норм...
Еще один вопросик, подскажите как запустить скрипт на выполнение от root, у меня в icewm прописаны горячие клавиши, при нажатии которых выполняется скрипт, но в скрипте есть команда которая должна выполнятся под рутом -> ifup ppp0 , иначе терминал выводит ошибку что не знает данной команды.
Пробовал в icewm в файле key (там и прописаны клавиши вызова скрипта) вписать gksu, вот так: key "Ctrl+Alt+c" gksu дальше путь до скрипта, но при нажатии да он запрашивает пароль рута, но все равно не воспринимает все равно команду ifup ppp0... Может быть есть другие способы вызова команд из под рута???
для тех кто на бронепоезде еще раз
...и где там видно, что соединение по ssh произошло?
Ответите завтра — на сегодня ваш аккаунт заблокирован, не нужно хамить людям, к которым обращаетесь за помощью.
не надо читать через строчку;
для тех кто на бронепоезде еще раз
Сам с бронепоезда сойди и -
1 - С второго сообщения на форуме хамить? Я предупредил, второго раза не будет.
1 - Научись оформлять сообщения понятно для других, bbcode если что работает, тэг code пользуй, тарабарщину читать никому не охота.
2 - Рекомендации по поиску информации, и как правильно задавать вопросы.
Ответите завтра — на сегодня ваш аккаунт заблокирован, не нужно хамить людям, к которым обращаетесь за помощью.
Ой как мило)), а главное по делу и по вопросу!!!
Пардонте ВАШЕ БЛАГОРОДИЕ, конечно, но когда месяц помучаешься с подключением и при том знаешь что этот скрипт работает на деле, а тебя пишут сразу фразы типа:
телепаты в отпуске.
или задают вопросы не к месту
— первой строкой принято указывать что-то вроде #!/bin/bash, хотя вы, вероятно, показали лишь часть скрипта;
— в строке, где COMA_START_FUSE, с кавычками явно напутали;
Хамством в вашем лице являлось не желание прочитать дальше 2 строчек
...и где там видно, что соединение по ssh произошло?
я писал что не мог подсоединится как разssh -v user@IP-адрес (-v ключ что бы видеть детально подсоединение)
Либо сразу пишет Connection closed by "мой ip", либо запрашивает пароль, ввожу и опять Connection closed by "мой ip"
Хм...может быть я пишу
но по моему я даже построчно писал как что делал, не пытаясь захламить форум чисто кодом...тарабарщину
Не из тех кто любит вот так
export NAME_MAG="mag4"
export NAME_USER="user"
LOAD_OST=0
SEND_REPORT=0
VR=0
CIKL=0
umask 000
wvdial 2>/dev/null &
sleep 10
err_connect() {
# clear
echo "Не удается подключиться к серверу в офисе."
echo "Это может быть связано с временными проблемами в работе интернет"
echo "Попробуйте повторить соединение через некоторое время"
echo "Для завершения нажмите Enter"
read VR
exit
}
my_kill() {
if ( test -d /home/$NAME_USER/change/magtest ) ; then
fusermount -u /home/$NAME_USER/change
fi
if ( ps -A | grep wvdial > /dev/null ) ; then
killall wvdial 2>/dev/null
fi
if ( ps -A | grep pppd ) > /dev/null ; then
killall pppd 2>/dev/null
fi
}
echo ""
echo "Запустили обмен данными с офисом"
echo "Если вы хотите получить свежие остатки просто нажмите Enter"
echo "Если остатки не нужны, наберите \"0\" и нажмите Enter"
read LOAD_OST
if [ "$LOAD_OST" != "0" ] ; then
LOAD_OST=1
fi
echo "Соединяемся с сервером ... "
COMA_START_FUSE='sshfs '$NAME_USER'@85.###.###.253:/home/user/change /home/'$NAME_USER'/change -o nonempty'
# echo $COMA_START_FUSE
if !(test -d /home/$NAME_USER/change/magtest) ;then
if ! ( $COMA_START_FUSE ) ; then
my_kill
err_connect
fi
fi
echo "Подключение к серверу выполнено"
# проверим нет ли файла с обновлением программ и если есть, то запустим его и выйдем из текущей программмы.
if test -s /home/$NAME_USER/change/$NAME_MAG/update ; then
echo "Найден файл с обновлением программы. Будет выполнено обновление."
cp /home/$NAME_USER/change/$NAME_MAG/update /home/$NAME_USER/my_scripts/
rm /home/$NAME_USER/change/$NAME_MAG/update
/home/$NAME_USER/my_scripts/update
rm /home/$NAME_USER/my_scripts/update
fi
if test -s /home/$NAME_USER/change/$NAME_MAG/message ; then
echo ""
echo "!!! Вам пришло новое сообщение из офиса:"
echo ""
cat /home/$NAME_USER/change/$NAME_MAG/message
echo ""
echo "Для продолжения обработки нажмите Enter"
read VR
rm -f /home/$NAME_USER/change/$NAME_MAG/message
fi
# сначала отправим в офис отчет, если он есть
if test -s /var/Exchange/report.txt ; then
echo "Обнаружили новый отчет о продажах. Отправляем на сервер."
cp /var/Exchange/report.txt /home/$NAME_USER/change/$NAME_MAG/
rm /var/Exchange/report.txt
SEND_REPORT=1
echo "Отчет отправлен."
fi
# Теперь сформируем отчет с запросом действий от офисного компьютера обнулим файл задания
echo > /home/$NAME_USER/change/$NAME_MAG/job.txt
# если есть отчет о продажах, то укажем это в задании
if [ "$SEND_REPORT" = "1" ] ; then
echo "SEND_REPORT " >> /home/$NAME_USER/change/$NAME_MAG/job.txt
fi
# если нужны остатки то так же укажем это в задании
if [ "$LOAD_OST" = "1" ] ; then
echo "LOAD_OST " >> /home/$NAME_USER/change/$NAME_MAG/job.txt
echo "Выполнили запрос остатков товара"
fi
# все готово и дадим команду для выполнения задания удаленным компьютером
touch /home/$NAME_USER/change/job_$NAME_MAG
# сделаем небольшую паузу до того, как искать ответные данные на сервере
echo -n "Ждем результат обработки от сервера "
CIKL=0
while [ $CIKL -lt 10 ]
do
CIKL=`expr $CIKL + 1`
sleep 3
echo -n "."
done
CIKL=0
while [ $CIKL -lt 50 ]
do
CIKL=`expr $CIKL + 1`
sleep 5
echo -n '.'
if test -f /home/$NAME_USER/change/$NAME_MAG/rez.txt ; then
echo ''
mv /home/$NAME_USER/change/$NAME_MAG/rez.txt /home/$NAME_USER/my_scripts/
break
fi
done
#разбираем что тут нам прислали в качестве ответа с сервака
if test -f /home/$NAME_USER/my_scripts/rez.txt ; then
# проверим сформировались ли остатки и если да,то загрузим
if [ $LOAD_OST = "1" ] && [ `less /home/$NAME_USER/my_scripts/rez.txt | grep SEND_OST=1` ] ; then
echo "Загружаем остатки."
if mv /home/$NAME_USER/change/$NAME_MAG/goods.txt /var/Exchange/ ; then
if mv /home/$NAME_USER/change/$NAME_MAG/goods.flz /var/Exchange/ ; then
echo "Новые остатки загружены в программу."
fi
fi
fi
# если отправляли отчет, то проверим нормально ли он загрузился
if [ $SEND_REPORT = "1" ] ; then
if [ `less /home/$NAME_USER/my_scripts/rez.txt | grep GET_REPORT=1` ] ; then
echo "Отправленный вами отчет был принят в офисе."
else
echo "!!! При загрузке отчета в офисе возникли проблемы."
echo "!!! До устранения этой проблемы остатки получаемые вами будут не актуальны."
fi
fi
# удалим у себя файл ответа сервера
rm /home/$NAME_USER/my_scripts/rez.txt
my_kill
echo "Обмен с офисом завершен"
echo "Для завершения работы нажмите Enter"
read vr
exit 0
fi
my_kill
echo ""
echo "!!!! Что то пошло не так и не удалось дождаться ответа от сервера"
echo "Для завершения работы нажмите Enter"
read vr
и в низу такая подпись, что то не работает :D
спросил конкретно по интересующему вопросу..
Еще раз звените меня ХАМА!!!
А теперь по делу, еще раз
Может быть есть другие способы вызова скрипта с правами рута???
С уважением ваш читатель!!! :)
Может быть есть другие способы вызова скрипта с правами рута???
Настроить sudo.
P.S. Вы с сарказмом не переусердствуйте. Разумеется, если хотите посещать форум и получать здесь поддержку.
amorfis74, вот ты странный человек, кому интересен тут твой скрипт в контексте монтирования sshfs?
С простого начни - просто в консоли смонтируй - работает (если нет -debug и выхлоп сюда)? Потом дальше по цепочке.
Ребят повторю вопрос:
подскажите как запустить скрипт на выполнение от root, у меня в icewm прописаны горячие клавиши, при нажатии которых выполняется скрипт, но в скрипте есть команда которая должна выполнятся под рутом -> ifup ppp0 , иначе терминал выводит ошибку что не знает данной команды.
Пробовал в icewm в файле key (там и прописаны клавиши вызова скрипта) вписать gksu, вот так: key "Ctrl+Alt+c" gksu дальше путь до скрипта, но при нажатии да он запрашивает пароль рута, но все равно не воспринимает все равно команду ifup ppp0... Может быть есть другие способы вызова команд что бы выполнялись команды с провами рута???
gksu использовал для вызова скрипта при нажатии определенных клавиш
Смысл в том что бы кассир нажимал комбинацию клавиш (пример:Ctrl+Alt+c), при которых будет выполняться скрипт.
Кассира не должен вообще ни как касаться терминальной системы и водить что то..Он просто работает с ПО Денси:Касса, а для передачи данных с офисом использует этот скрипт...
Ребят повторю вопрос:
Настроить sudo.
Посредством команды sudo можно настроить запуск от имени другого пользователя ограниченного числа команд (можно всех) на ограниченном числе хостов (можно на любом компьютере), в том числе и без ввода пароля для определённых пользователей или групп.
Т.е. в вашем случае в скрипте вместо команды ifup ppp0 просто будет sudo ifup ppp0. Но, повторюсь, нужно произвести необходимые настройки.
Например, чтобы разрешить любому пользователю из группы kassir на определённом компьютере host1.org выполнить указанную команду без ввода пароля нужно в файл /etc/sudoers добавить строку
%kassir host1.org = NOPASSWD: /sbin/ifup ppp0
Редактирование файла /etc/sudoers настоятельно рекомендуется выполнять с помощью команды visudo.
sshfs '$NAME_USER'@85.###.###.253:/home/user/change /home/'$NAME_USER'/change -o nonempty'Вот это в консоли работает?
да конечно!sshfs '$NAME_USER'@85.###.###.253:/home/user/change /home/'$NAME_USER'/change -o nonempty'
Вот это в консоли работает?
Буду настраивать sudo, результат напишу. Спасибо за доп информацию, с командой sudo в такой вариации не работал еще...
да конечно!
Ну тогда это не вопрос sshfs, а вопрос написания обертки.
До этого были проблемы именно с SSHFS, решилось само собой..