executa todo o comando dentro do script digitando a senha uma vez

0

eu quero escrever script dentro do script eu vou fazer muitos comandos que precisam ser raiz como

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install eclipse

mas eu quero escrever a senha apenas uma vez

eu tentei escrever no topo

sudo su

para ser executado como root, mas pare o script então o que eu posso para escrever a senha

    
por user234517 26.01.2014 / 01:52

2 respostas

2

A solução óbvia: execute o script como root

sudo /your/script

Então todos os comandos no script serão executados como root.

Se alguns comandos não precisarem de root, use sudo para voltar ao usuário normal

    
por kiri 26.01.2014 / 02:12
0

Se você tem comandos que não exigem sudo , você pode verificar minha resposta em esta questão .

Por uma questão de brevidade, porém, aqui está uma resposta rápida:

#!/bin/bash

PW=$1

echo $PW | apt-get update
echo $PW | apt-get upgrade
echo $PW | apt-get install eclipse

Executar com bash file_name.bash sudo_pw

A razão para passar desta forma é que as pessoas não podem necessariamente dizer qual é o parâmetro que você está passando, então mesmo que alguém monitore de alguma forma (mesmo olhando por cima do ombro), ainda é seguro.

A principal razão pela qual eu faço isso é porque a maioria dos comandos que eu executo com sudo criam objetos que precisam ser manipulados mais tarde, e usar sudo command normalmente os torna inacessíveis, mesmo se eu sudo next_command . Um exemplo simplista seria criar um arquivo do Excel e querer manipulá-lo com outro processo. Mesmo correndo com sudo , na maioria das vezes, não consigo acessá-lo novamente sem sobrescrevê-lo, o que o recria como um objeto inacessível.

Nota: Isso também funciona como um script de shell, pois não há nada específico para BASH na sintaxe, então você poderia usar #!/bin/sh e ./file_name.sh sudo_pw , se essa for sua preferência.

    
por csworenx 22.06.2018 / 01:21