как залить файл зенкой на впс ?

  • Автор темы Автор темы lzlmrf
  • Дата начала Дата начала

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
491
Реакции
149
Баллы
43
Создал сайты от root на vps . По ftp если соеденяться - то нет доступа (запрет rootу) а если соеденяться через нового пользователя через фтп - то он не видит сайты..Нужно залить файл как то. Можно еще переназначить права простому пользователю - но не селен в баше - как прописать все это , чтоб запустить 500 команд разных . Кто то может уже поборол это?
 
Создал сайты от root на vps . По ftp если соеденяться - то нет доступа (запрет rootу) а если соеденяться через нового пользователя через фтп - то он не видит сайты..Нужно залить файл как то. Можно еще переназначить права простому пользователю - но не селен в баше - как прописать все это , чтоб запустить 500 команд разных . Кто то может уже поборол это?
SSH для root включен, можно попробовать через него, то есть через SFTP..
а вообще конечно идеально было через нового пользователя сайты создавать..
еще можно в панели управления попробовать включить FTP для root, если не получится через SFTP..
 
  • Оценить
Реакции: lzlmrf
хз..я ставлю 22 - но он сбрасывается
 
конектится - если не указывать путь на сервере..выдает папки в список. осталось понять что писать в этот путь../root не работает
 
конектится - если не указывать путь на сервере..выдает папки в список. осталось понять что писать в этот путь../root не работает
аа, ну значит дело осталось за малым.. :)
 
  • Оценить
Реакции: lzlmrf
аа, ну значит дело осталось за малым..
конектится - если не указывать путь на сервере..выдает папки в список. осталось понять что писать в этот путь../root не работает
Так все-таки в чем дело оказалось?
У меня те же грабли с путями, под рутом не могу выйти за пределы этой директории (/root), выдает ошибку.
 
насколько помню - я в пути указал две точки в начале".."
 
  • Оценить
Реакции: takerz и bizzon
Че вы там такое страшное намутили что оно не заливает?
По умолчанию веста же вроде через своего пользователя ‘admin’ создает каталоги с сайтами. Вот через него о заливайте зенкой по обычному FTP. Вот скрин настроек фтп и кубика заливки, это так у меня на VPS с вестой заливает (архивы сайтов от генератора PandoraBox идут в виде ‘site.ru1.zip’):


Распаковку делаю из под рута в C# кубике зенки (спасибо этой теме):
Код:
Развернуть Свернуть Копировать
unzip -oq /home/admin/web/{-Variable.site_url-}1.zip -d /home/admin/web/{-Variable.site_url-}/public_html/
И удаляем файл:
Код:
Развернуть Свернуть Копировать
rm /home/admin/web/{-Variable.site_url-}1.zip
потом может еще права надо выставить, если какие-то файлы сайта этого требуют. Ну или банально на все сайты (но это брешь в безопасности):
Код:
Развернуть Свернуть Копировать
chmod 777 /home/admin/web/*/public_html
 
Последнее редактирование:
  • Оценить
Реакции: bizzon
Распаковку делаю из под рута в C# кубике зенки (спасибо этой теме):
Имеется ввиду вот этой конструкцией:
var cmd = sshClient.CreateCommand();
cmd.Execute();
А как распаковать, например, в десять директорий?
Как этот список директорий в C# кубике перебрать без необходимости каждый раз делать заново соединение sshClient.Connect();
 
Ну дык не закрывайте соединение. Сделайте отдельно десять команд (unzip1 .... unzip10) на распаковку в разные директории и последовательно их выполняйте.
Вот тогда весь код, может что переделайте:
C#:
Развернуть Свернуть Копировать
string ip = project.Variables["ip"].Value;
string user = project.Variables["user_SSH"].Value;
string pass = project.Variables["password_SSH"].Value;
string unzip1 = project.Variables["unzip1"].Value;
string unzip2 = project.Variables["unzip2"].Value;
string unzip3 = project.Variables["unzip3"].Value;
string SendInfo1 =  "Соединились с сервером " + project.Variables["ip"].Value + " , делаем распаковку";
string SendInfo2 =  "+ распаковка закончилась ";
SshClient sshClient = new SshClient(ip, 22, user, pass);

    sshClient.Connect();
     
        project.SendInfoToLog(SendInfo1, true);
     
        var cmd = sshClient.CreateCommand(unzip1);
        cmd.Execute();
     
        cmd = sshClient.CreateCommand(unzip2);
        cmd.Execute();
     
        cmd = sshClient.CreateCommand(unzip3);
        cmd.Execute();
     
        project.SendInfoToLog(SendInfo2, true);
 
   sshClient.Disconnect();

return "ok";
 
  • Оценить
Реакции: Prena
Да, если 10 - то можно и от руки указать эти переменные, а если что понадобиться 100 , то как здесь через список обыграть?
Чтобы список формировать в стандартном кубике списка, а перебирать в C# кубике с ssh.
 
Уточните: один и тот же файл надо разархивировать в несколько директорий (из списка)?
 
C#:
Развернуть Свернуть Копировать
string ip = project.Variables["ip"].Value;
string user = project.Variables["user_SSH"].Value;
string pass = project.Variables["password_SSH"].Value;
string SendInfo1 =  "Соединились с сервером " + project.Variables["ip"].Value + " , делаем распаковку";
string SendInfo2 =  "+ распаковка закончилась ";
string unzip_part1 =  "unzip -oq /home/admin/web/DNS13.zip -d"; // это только начало команды распаковки, здесь указан файл архива и ключи распаковки
var baselist = project.Lists["Dir_List"]; // Список директорий должен называться в зенке "Dir_List"
SshClient sshClient = new SshClient(ip, 22, user, pass);

    sshClient.Connect();
    project.SendInfoToLog(SendInfo1, true);
   
        foreach(string str in baselist) // в блоке ниже мы перебираем в цикле каждую строку (str) нашего списка, и выполняем для каждой строки команду распаковки
        {
            string unzip = unzip_part1 + str; // а вот здесь мы добавляем к нашей команде распаковки финальный штрих - директорию куда распаковывать (str)
            var cmd = sshClient.CreateCommand(unzip);  // делаем саму распаковку
            cmd.Execute();
        }

    project.SendInfoToLog(SendInfo2, true);
    sshClient.Disconnect();

return "ok";
Не знаю насколько логично правильно это написано на C#, но проверил на своем сервере, - все работает! Список папок должен называться в зенке Dir_List, и выглядить примерно так:
Код:
Развернуть Свернуть Копировать
/home/admin/DNS1/
/home/admin/DNS2/
/home/admin/DNS3/
/home/admin/DNS4/
/home/admin/DNS5/

Пример с циклом в списке (foreach) позаимствовал в этом посте - http://zennolab.com/discussion/threads/snipety-ot-a-do-ja.13515/#post-80675
 
Последнее редактирование:
  • Оценить
Реакции: bizzon
orka13, супер, то что надо и самое главное, "позаимствовал в этом посте" - теории урок.
Спасибо огромное!!!
 
насколько помню - я в пути указал две точки в начале".."
Благодарю! я 2 часа продолбался, даже ОС переустановил на другую версию и хотел уже фтп сервер ставить. А дело было в точках "../root"!!!
 
Ну дык не закрывайте соединение. Сделайте отдельно десять команд (unzip1 .... unzip10) на распаковку в разные директории и последовательно их выполняйте.
Вот тогда весь код, может что переделайте:
C#:
Развернуть Свернуть Копировать
string ip = project.Variables["ip"].Value;
string user = project.Variables["user_SSH"].Value;
string pass = project.Variables["password_SSH"].Value;
string unzip1 = project.Variables["unzip1"].Value;
string unzip2 = project.Variables["unzip2"].Value;
string unzip3 = project.Variables["unzip3"].Value;
string SendInfo1 =  "Соединились с сервером " + project.Variables["ip"].Value + " , делаем распаковку";
string SendInfo2 =  "+ распаковка закончилась ";
SshClient sshClient = new SshClient(ip, 22, user, pass);

    sshClient.Connect();
    
        project.SendInfoToLog(SendInfo1, true);
    
        var cmd = sshClient.CreateCommand(unzip1);
        cmd.Execute();
    
        cmd = sshClient.CreateCommand(unzip2);
        cmd.Execute();
    
        cmd = sshClient.CreateCommand(unzip3);
        cmd.Execute();
    
        project.SendInfoToLog(SendInfo2, true);

   sshClient.Disconnect();

return "ok";


подскажите пожалуйста какая команда, что бы залить архив(файл) на сервер, например C:\Users\ и тд на сервер в папку, уже весь интернет перерыл от и до, везде то копирование с папки в папку, то с сервера на сервер, то еще бог знает, что, а простейшей команды нигде не встречу.
 
"C:\Users\" это не "архив(файл)", это просто папка. Наверное, стоит ее сжать в архив и описанным методом заливать.
 
это я для примера написал, что путь именно с компа, пускай будет файл подскажите пожалуйста команду
scp путь с компа /var/ www/ user/d ata/www/domain.com/ не так же)
 
До меня дошло что я заливал по FTP, а уже распаковку архивов делал через SSH. Вы же вроде спрашиваете, как именно заливать по SSH. Но увы, с таким на зенке не сталкивался, так что не помогу. Может кто другой подскажет.
 
  • Оценить
Реакции: Prena

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)