sunucu tarafı komut kök veya php yaşayabilir bir interaktif bir şekilde olarak çalıştırmak

0 Cevap php

Ben farklı komut çoğu root yetkileri gerektiren eylemler sahip olarak bir yerel sunucusu administrativa görevleri gerçekleştirmek için çıkış yolu bulmaya çalışıyorum.

Nasıl az güvenlik etkisi ile bu komut yürütebilirsiniz? ¿

Ben bazı örnek komut göndermek:

#!/bin/bash
if [ $1 == '-h' ];
then
  echo +-------+-------+-------+-------+-------+-------+-------+-------+-------+
  echo +                               Instrucciones                           +
  echo +-------+-------+-------+-------+-------+-------+-------+-------+-------+
  echo Para ejecutar el script hay que hacer cd hasta /var/www/scripts/server .. 
  echo ejecutar ----> bash crearhosts $dominio $dominio $dominio $status
  echo Se pueden poner tantos dominios como se quiera sin extensión salvo el último parámetro que ha de ser el tipo de site con los siguientes valores validos:
  echo localzone1
  echo localzone2
  echo localzone3
  echo +------------ejemplo-------------+
  echo bash domain domain domain localzone
  echo +-------+-------+-------+-------+-------+-------+-------+-------+-------+
  echo +                               fin                                     +
  echo +-------+-------+-------+-------+-------+-------+-------+-------+-------+
else 

    #+-------+-------+-------+-------+-------+-------+-------+-------+-------+
    #+                               Variables                               +
    #+-------+-------+-------+-------+-------+-------+-------+-------+-------+

    params=$*
    array=$(echo $params | sed 's/ /;/g')
    IFS=";"
    set -- $array
    sites=($array)

    base="/var/www"
    #+-------+-------+-------+-------+-------+-------+-------+-------+-------+
    #+                               funciones                               +
    #+-------+-------+-------+-------+-------+-------+-------+-------+-------+
    function hostconf(){
      case $status in
        aracne)
          cp /var/www/vhosts/template.ethings.com.conf /var/www/vhosts/$domain-aracne.ethings.com.conf  
          grep -Rl -e 'ethings/template' /var/www/vhosts/$domain-aracne.ethings.com.conf | xargs sed -i 's:domain/template:domain/'$domain'-aracne:g'
              grep -Rl -e 'template' /var/www/vhosts/$domain-domain.com.conf | xargs sed -i 's/template/'$domain'-aracne/g' 
          mkdir $base/$status/${directorios[0]}-aracne ; mkdir $base/$status/${directorios[0]}-dominio/${directorios[1]} ; mkdir $base/$status/${directorios[0]}-dominio/${directorios[2]}
              echo +---------------------------------------------------------------------------------------------------------------------------------------------+
              echo "+----------------------No OLVIDE AÑADIR EL DOMINIO "$domain"-domain.com para la ip xxx.xxx.xxx.xxx en su archivo hosts"
              echo +----------------------------------------------------------------!!!!!!!!!!!!!!!!!!!!---------------------------------------------------------+;;

        static)
          cp /var/www/vhosts/template.ethings.com.conf /var/www/vhosts/$domain.ethings.static.com.conf  
          grep -Rl -e 'ethings/template' /var/www/vhosts/$domain.ethings.static.com.conf | xargs sed -i 's:ethings/template:ethings/static-webs/'$domain':g'
          grep -Rl -e 'template.ethings' /var/www/vhosts/$domain.ethings.static.com.conf | xargs sed -i 's/template.ethings/'$domain'.ethings.static/g'
          mkdir $base/ethings/$status-webs/${directorios[0]}; mkdir $base/ethings/$status-webs/${directorios[0]}/${directorios[1]}; mkdir $base/ethings/$status-webs/${directorios[0]}/${directorios[2]}
              echo +---------------------------------------------------------------------------------------------------------------------------------------------+
              echo "+----------------------No OLVIDE AÑADIR EL DOMINIO "$domain".domain.com para la ip xxx.xxx.xxx.xxx en su archivo hosts"
              echo +----------------------------------------------------------------!!!!!!!!!!!!!!!!!!!!---------------------------------------------------------+;;
        *)
          cp /var/www/vhosts/template.domain.com.conf /var/www/vhosts/$domain.ethings.com.conf  
          grep -Rl -e 'template' /var/www/vhosts/$domain.domain.com.conf | xargs sed -i 's/template/'$domain'/g'
          mkdir $base/ethings/${directorios[0]} ; mkdir $base/ethings/${directorios[0]}/${directorios[1]} ; mkdir $base/ethings/${directorios[0]}/${directorios[2]}
              echo +-------------------------------------------------------------------------------------------------+
              echo "No OLVIDE AÑADIR EL DOMINIO "$domain".domain.com para la ip xxx.xxx.xxx.xxx en su archivo hosts"
              echo +-----------------------------------!!!!!!!!!!!!!!!!!!!!------------------------------------------+;;
      esac
    }

    #echo ${#sites[@]} +-------+ elements of array  +--------+
    for((count=0; count<$((${#sites[@]}-1)); count++))
    do
      directorios=("${sites[$count]}" "html" "logs")
      domain=${sites[$count]}
      status=${sites[$((${#sites[@]}-1))]}
      hostconf $status
    done
        /etc/init.d/apache2 restart
fi
#

Gördüğünüz gibi bu kadar gerektiren birçok eylemler vardır için bu komut root olarak çalıştırılması gerekir

Başka ScriptTM:

echo password | python /var/www/google_appengine/appcfg.py --passin --email=email update localapplicationurl
#

i çalıştırdığınızda i appcfg.py bile 4755 chmoding ve = NOPASSWD tüm tüm visudoing izinleri ile apache hataları alıyorum: urlscript / script

Ve diğer çalışır.

Bu kadar çok soru gönderebilir ama gerçekten benim şirkette insanlar web arayüzü olarak bunu böylece birçok komut çalıştırmak gerekiyor için üzgünüm.


Cevabınız için teşekkür ederim. Peki temelde kendi ihtiyaçlarına göre kişiselleştirilmiş bir plesk türü paneli. Bu vb i biz komut dosyaları var üretimi için dört yerel sunucuları ayarlamak 1000'den fazla etki ile bir şirket olduğunu, samba yapılandırmaları, vhost yapılandırmaları, uzak sunuculara yükleme siteleri ve böylece onları indirebilirsiniz oluşturmaya programcılar ihtiyaçlarına veritabanlarının yüklemesini otomatik, kullanıcı grupları oluşturma içerir google CDN yükleme ve amazon, vb tüm bu bağımsız komut kurmak ama nedense insanlar web arayüzünde bunu elde edebilmek için ihtiyaç var. Bu benden bir sürü iş bırakın (Ben bunu tek değilim) ve webserverların ENİYİLEMESİ ve diğerleri üzerinde yoğunlaşmak mümkün olacaktır. Yani ben bunu yapmak gerekir ve çoğu komut bir kez (ssh bağlantıları ftp vb) en az 30 farklı sunuculara veya indirme-yükleme 100 minisites ssh üzerinde ssh conections içeren, ya da başka ve başka python ve sdk ile google CDN çalışan ve. Onları seçmek için seçenek vermek - - eylemi seçmek - run yükleme-indirme-cleanremotecache-erasespecificfilesfolders-vb komut bu kullanıcıların adına olmak zorunda çoğu bu sunucudan bu etki olsun ihtiyacınız.

Yani şey. Bu konuda iyi bir şey ben çok sunucuları confs iptables veya yerel belirli mac adreslerine göre sunucuya toplam erişimi engelleyebilir, ve olduğunu. Yalnızca yerel çalıştırın ve çoğunlukla kök komutları dahil sripts çalıştırmak mümkün olmalıdır.

Ben sadece google bulunan birçok şey gibi spected veya benzer işe yaramazsa bunu yapmak için en iyi yolu odaklanmak gerekir. I yaklaşımın yol olsun gerisi ona ellerini koyarak bir konudur.

Maalesef kendimi çok uzatmak ama gördüğünüz gibi ben bir yıl önce başlayan bir şeyler yapmak için çok şey bilgisayar ve linux benim deneyime sahip.

0 Cevap