Resposta antiga .:
Você pode tirar o pkexec do roteiro? Tente criar o próximo script onde você cola seu código (sem o pkexec) e execute-o via pkexec a partir do seu script.
seu script: #!/bin/bash pkexec ./new_script
novo script: #!/bin/bash your command:
Editar: nova resposta
Após sua conversa com o @Thrig, eu acho que você vai fazer. Você deseja executar os dois programas em permissões de raiz sem autenticação dupla (apenas uma vez). Estes dois programas são: "virsh" e "gnome-boxes". Minha solução anterior (acima) está ok, mas não neste caso. Você escreveu para @Thrig que você está pensando em usar "sudo". Por que não usar "pkexec" e "sudo" juntos? Com a conclusão adequada de "/ etc / sudoers" você não precisará autenticar quando usar o comando "sudo" no script. Eu me deixei melhorar sua ideia. Espero que você goste. Vou descrever tudo passo a passo.
1. Crie três scripts:
a) main.sh - configura a conexão, destrói a conexão, executa as caixas-gnome. tudo como root
b) net.sh - executa a ordem
c) die.sh - executa a ordem
a)
#!/Bin/bash
sudo /home/ham/..your..path../net.sh && pkexec /usr/bin/gnome-boxes;
sudo /home/ham/..your..path../die.sh;
exit
por que isso? descrição dos operadores
b)
#!/Bin/bash
virsh net-start default
c)
#!/Bin/bash
virsh net-destroy default
2. Edite o arquivo "sudoers" para criar o script: b) c) execute com privilégios de root:
$ sudo nano /etc/sudoers
%sudo ALL=(root) NOPASSWD: /home/..your..path../net.sh
%sudo ALL=(root) NOPASSWD: /home/..your..path../die.sh
3. Altere o proprietário dos scripts b) c) para root:
$ sudo chown 700 /home/ham/..your..path../net.sh
$ sudo chown 700 /home/ham/..your..path../die.sh;
4. Crie uma regra no polkit para gnome-boxes. A resposta: "como fazer isso?" está aqui: simple_polkit_rule
5. Editar arquivos:
-
org.gnome.Boxes.service
Exec=/home/..your..path../start.sh
-
org.gnome.Boxes.desktop
Exec=/home/..your..path../start.sh
6. Agora, rode o aplicativo gnome-boxes clicando no seu ícone de atalho. Acabado. De mim mesmo eu adicionei auto desligar a conexão quando você fechar o aplicativo gnome-boxes.