2017-02-27 4 views
1

Mes scripts perl devraient être capables de changer le compte commun en compte root pendant l'exécution, puis de passer aux commandes restantes. Mais je ne sais pas comment faire:Sous Linux, comment changer l'utilisateur en root dans Perl et continuer à exécuter ce script? Comment exporter un proxy en Perl?

  1. Modification compte root et capable de passer automatiquement l'authentification, je code suivant, mais a échoué.

    system "echo \"$password\" | sudo -S su root"; 
    
  2. Capable de continuer à faire le reste scriptsI trouvé lors de l'utilisation des scripts pour changer compte (tout simplement essayer de système « sudo su »;), il est en mesure d'exécuter des scripts de repos

  3. que je dois proxy à l'exportation, mais quand je en utilisant le code suivant, il ne fonctionne pas:

    system "export http_proxy=http://proxy.companyname.com:8080"; 
    
+0

double possible de [Exécuter une commande système linux comme super-utilisateur, en utilisant un script python] (http://stackoverflow.com/questions/583216/run-a-linux-system-command-as-a -superuser-using-a-python-script) ou [comment puis-je exécuter un script perl qui a besoin de root?] (https://stackoverflow.com/questions/16178015/how-can-i-run-a-perl- script-which-needs-root? rq = 1) – ray

+0

Merci, mais un peu différent. Je devrais changer le compte en root et exporter le proxy en utilisant des scripts perl et ne peux pas changer les fichiers profile/config ou en utilisant "sudo command" à la place. –

+0

Les versions récentes de 'sudo' peuvent être faites pour lire le mot de passe de' stdin' en passant ensuite le drapeau '-S'. Lisez la [man page] (https://www.sudo.ws/man/1.8.18/sudo.man.html) pour les détails! – salva

Répondre

0

peut-être essayer des accents graves?

my $sudo = `echo \"$password\" | sudo -S su root`; 

également similaire pour l'exportation.

my $exp = `export http_proxy=http://proxy.companyname.com:8080`; 
+0

Merci, mais je pense que la fonction du système ""; est presque le même que les backticks? En fait, je ne veux pas obtenir la sortie des commandes ci-dessus, j'espère juste que ces deux commandes peuvent être exécutées. –

1

Si vous devez exécuter d'autres scripts à exécuter avec la racine et vous avez module ssh Perl installé, vous pouvez ouvrir une session ssh au localhost avec l'utilisateur root et lancez l'exécution de vos scripts à partir de là.

my $ssh = Net::SSH::Perl->new("host1"); 
$ssh->login("root", "pass1"); 
$ssh->cmd("sh /opt/..."); 
+0

Merci pour votre réponse, mais je ne peux pas installer Net :: SSH :: Perl. –