Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: [Решено] Не запускаются shell-скрипты под sudo  (Прочитано 7300 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн CanSee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
    • life-warrior.org
Привет всем.
У меня такая проблема - на запускается shell-скрипт для восстановления сайта из бэкапа. Скрипт простой - несколько команд, которые удаляют файлы и на их место записывают другие, извлекаемые из архива. Сайт располагается в /var/www, у юзера доступа туда нет, поэтому приходится запускать под sudo.
Самое интересное заключается в том, что когда я просто открываю файл скрипта в текстовом редакторе и копирую команды из него по одной в терминал, то всё замечательно выполняется. А вот если запускаю скрипт - вот тут-то и начинаются чудеса. Появляется куча ошибок: "нет такой директории: /var/www", "chmod не может получить доступ к /var/www/MySite", "файл не найден: /var/www/sql-file.sql" и так далее в том же духе. Директории и файлы, конечно, существуют. Но скрипт их почему-то не видит.
Кроме скрипта восстановления, есть также скрипт бэкапа. Он данные из /var/www только читает, права рута ему не нужны, и этот скрипт нормально работает. Не сообщает о неожиданной пропаже /var/www :)
Думал, может быть, проблемы в кодировке файла скрипта. Локаль в системе - utf8, скрипт тоже в utf8. Пробовал перекодировать в utf8 c BOM и без BOM - никакого эффекта. Вывод cat показывает нормальное содержимое файла скрипта. Ни одного кириллического символа в скрипте нет.
У меня уже идеи закончились, в чём может быть дело. Чтение вывода "man sudo", гугление по словам "настройка sudo" не помогли. Кто хорошо знаком с консолью - пожалуйста, подскажите, в чём тут может быть дело.
« Последнее редактирование: 04 Июня 2010, 19:34:39 от CanSee »
StockNovice -программа, позволяющая попробовать биржевую торговлю без риска
Устают глаза? Скачай программу TakeBreak

Оффлайн W03L

  • Участник
  • *
  • Сообщений: 128
    • Просмотр профиля
Re: Не запускаются shell-скрипты под sudo
« Ответ #1 : 04 Июня 2010, 09:42:37 »
попробуй в скрипте перед каждой командой поставить sudo
и сам скрипт запустить от sudo
должно получиться

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Не запускаются shell-скрипты под sudo
« Ответ #2 : 04 Июня 2010, 09:45:36 »
Файл скрипта в студию.

Оффлайн CanSee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
    • life-warrior.org
Re: Не запускаются shell-скрипты под sudo
« Ответ #3 : 04 Июня 2010, 09:51:31 »
Содержимое скрипта:
#!/bin/bash
# Deleting sql file if exists:
rm -f "/var/www/wxnewbase.sql"
# Deleting wx site folder:
rm -r -f "/var/www/wxNew"
# Switching to site folder:
cd "/var/www"
# Extracting last backup from archive into site folder:
7z x "/home/cansee/Projects/Apache/SiteBackups/wxnewsite.7z"
# Restoring database:
mysql -h localhost -u root --password="password" wxbooksite < "/var/www/wxnewbase.sql"
# Deleting sql file:
rm -f "/var/www/wxnewbase.sql"
# Setting read and execution rights for CPP site folder:
chmod -R 755 "/var/www/wxNew"
# Setting write rights for "sites/default/files" folder:
chmod -R 777 "/var/www/wxNew/sites/default/files"

Изначально пути были без кавычек. Потом, когда скрипт отказался работать, я пути взял в кавычки. Результатов это не принесло никаких.

Пользователь решил продолжить мысль 04 Июня 2010, 09:57:29:
попробуй в скрипте перед каждой командой поставить sudo
и сам скрипт запустить от sudo
должно получиться
Попробую вечером - сейчас я на работе, у меня тут один виндоус. А комп с Ubuntu и неработающим скриптом дома.
А зачем писать перед каждой командой sudo, если командный процессор запускается и так под sudo? Мне интересно разобраться, почему он не работает.
Я пробовал запускать скрипт двумя путями. Один путь - в терминале набирал "sudo bash ./script.sh". Второй - в терминале набирал "sudo gnome-terminal", запускался второй терминал, и уже в нём я набирал  "bash ./script.sh". Разницы не было никакой.
« Последнее редактирование: 04 Июня 2010, 09:57:29 от CanSee »
StockNovice -программа, позволяющая попробовать биржевую торговлю без риска
Устают глаза? Скачай программу TakeBreak

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Не запускаются shell-скрипты под sudo
« Ответ #4 : 04 Июня 2010, 10:08:04 »
CanSee, файл выкладывайте, причём целиком. Содержимое и так работает, сами же писали.

Оффлайн БТР

  • Заслуженный пользователь
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6218
    • Просмотр профиля
Re: Не запускаются shell-скрипты под sudo
« Ответ #5 : 04 Июня 2010, 10:08:26 »
1. Кавычки не нужны.
2. Писать sudo перед каждой командой не надо.
2. Команда bash тоже не нужна -
sudo sh script.sh

Оффлайн CanSee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
    • life-warrior.org
Re: Не запускаются shell-скрипты под sudo
« Ответ #6 : 04 Июня 2010, 10:16:34 »
Файл прилагаю. Только пришлось переименовать его из sh в txt, иначе форум не разрешает его присоединить.
Запускать "sudo sh ./scrupt.sh" тоже пробовал, результат такой же.
StockNovice -программа, позволяющая попробовать биржевую торговлю без риска
Устают глаза? Скачай программу TakeBreak

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Не запускаются shell-скрипты под sudo
« Ответ #7 : 04 Июня 2010, 10:32:51 »
Чтд. Переконвертируйте концы строк.
http://www.wilsonmar.com/1eschars.htm

Оффлайн CanSee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
    • life-warrior.org
Re: Не запускаются shell-скрипты под sudo
« Ответ #8 : 04 Июня 2010, 10:49:18 »
Ага. Похоже что так и есть. У меня chmod выдавал ошибки вроде : невозможно получить доступ к "/var/www/wxNew\r". Значит, \r в конце мешает. Как я понял из ссылки, надо сделать
sed 's/.$//' file # assumes that all lines end with CR/LF Так и сделаю, как доберусь до компа с Ubuntu.
Спасибо большое :)
StockNovice -программа, позволяющая попробовать биржевую торговлю без риска
Устают глаза? Скачай программу TakeBreak

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Не запускаются shell-скрипты под sudo
« Ответ #9 : 04 Июня 2010, 11:01:30 »
На будущее, этот косяк сразу видно в mcedit, или если смотреть
od -c file
Как я понял из ссылки, надо сделать...
sed 's/.$//' file

Оффлайн CanSee

  • Автор темы
  • Любитель
  • *
  • Сообщений: 81
    • Просмотр профиля
    • life-warrior.org
Re: Не запускаются shell-скрипты под sudo
« Ответ #10 : 04 Июня 2010, 11:09:54 »
Буду знать теперь :) Спасибо :)

Пользователь решил продолжить мысль 04 Июня 2010, 19:18:37:
Попробовал - точно. В этом было дело. После приведения концов строк к нормальному виду скрипты заработали как надо :)
« Последнее редактирование: 04 Июня 2010, 19:18:37 от CanSee »
StockNovice -программа, позволяющая попробовать биржевую торговлю без риска
Устают глаза? Скачай программу TakeBreak

 

Страница сгенерирована за 0.128 секунд. Запросов: 23.