Eu tenho estas linhas de script do meu ISP:
sudo bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Funciona se eu colar linha por linha no Terminal. Quero criar um arquivo * .command e executá-lo clicando duas vezes. Mas tudo o que recebo é o prompt de senha e a janela vazia do bash. O arquivo "opções" resultante está vazio.
Eu tentei isso:
#!/bin/bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Eu recebo:
/ etc / ppp / options: permissão negada
Eu acho que preciso usar algum comando para obter privilégios de root de dentro do bash.
Respostas:
Pegue o script que você criou:
Salve-o no diretório inicial ou em um diretório 'scripts' dentro do diretório inicial, como l2tp.sh. Permita que seja executado (escreva este comando no Terminal):
Para executar o arquivo usando o sudo (privilégios de root):
Método 1. No tipo de terminal:
Método # 2. Crie um arquivo run_l2tp.command com este conteúdo:
Permita que seja executado:
Quando você clica duas vezes em run_l2tp.command e insere a senha, o arquivo l2tp.sh será executado com privilégios de root.
Algumas notas:
fonte
Guarde isso:
para a área de trabalho em um arquivo chamado
script.sh
.Abra uma janela do Terminal e digite:
Digite sua senha quando solicitado e todos os comandos no arquivo serão executados com privilégios de superusuário.
fonte
Se, por motivos de segurança, você não deseja que nenhum usuário do sistema possa executar o script, mas deseja que seja solicitada uma senha administrativa, uma solução alternativa seria salvar o script de shell e usar o programa AppleScript Editor para criar um AppleScript.
O AppleScript seria uma frase, dizendo
do shell script «your script's name here» with administrator privileges
. Salve esse script como um aplicativo. Então, quando você clica nele, solicita uma senha de administrador e, em seguida, executa o script de shell com privilégios de administrador.Obviamente, substitua
«your script's name here»
pelo caminho do seu script.fonte
O problema é que quando você fazê-lo a partir da linha de comando, o que você está fazendo está começando
bash
sobsudo
e, em seguida, enviar esses próximos dois comandos parabash
, não o shell originais. (o sinal é que você precisaexit
duas vezes)Quando você faz isso em um script, o
bash
comando nunca sai, portanto, os próximos dois comandos nunca são executados.Não é tão elegante quanto a solução AppleScript, mas se você fizer isso como um script na linha de comando, o equivalente seria:
Se não precisássemos do redirecionamento io (o
>>
bit), poderíamos simplesmente chamar o comando diretamente viasudo
sem precisar dosudo sh -c
truque. (e observe que eu tive que citar o argumento parash -c
impedir que ele execute o eco como raiz, mas o arquivo anexado como usuário original.)Ele vai funcionar como um
.command
arquivo a partir do Finder, mas vai abrir uma janela de terminal, pedindo sua senha, e se digitado corretamente, vai executar os comandos. (supondo que você não tenha se autenticado recentemente porsudo
... se tiver, ele será executado sem avisar)fonte