一個提示 pkexec - 兩個命令
pkexec
當我必須使用兩個命令進行身份驗證時,有人可以回答我如何通過一個提示?我的簡單範例腳本:pkexec virsh net-start default; pkexec "/home/user/program";
我是linux環境的新手,謝謝:)
舊答案。: 您可以將 pkexec 從腳本中刪除嗎?嘗試創建下一個腳本,在其中粘貼程式碼(不帶 pkexec)並通過腳本中的 pkexec 執行他。你的腳本:
#!/bin/bash pkexec ./new_script
新腳本:#!/bin/bash your command:
編輯:新答案
在您與@Thrig 交談後,我猜您將要做什麼。您想在沒有雙重身份驗證的情況下以 root 權限執行這兩個程序(僅一次)。這兩個程序是:“virsh”和“gnome-boxes”。我以前的(上面)解決方案是好的,但在這種情況下不是。您寫信給@Thrig,您正在考慮使用“sudo”。為什麼不一起使用“pkexec”和“sudo”。正確完成“/etc/sudoers”後,在腳本中使用“sudo”命令時將不需要進行身份驗證。我讓自己改進你的想法。我希望你喜歡它。我將逐步描述一切。
**1.**創建三個腳本:
a) main.sh - 建立連接,銷毀連接,執行 gnome-boxes。一切都是根
b) net.sh - 執行命令
c) die.sh - 執行命令
一種)
#!/Bin/bash sudo /home/ham/..your..path../net.sh && pkexec /usr/bin/gnome-boxes; sudo /home/ham/..your..path../die.sh; exit
為什麼?運算符說明
b)
#!/Bin/bash virsh net-start default
C)
#!/Bin/bash virsh net-destroy default
**2.**編輯“sudoers”文件,使腳本: b) c) 以 root 權限執行:
$ sudo nano /etc/sudoers
%sudo ALL=(root) NOPASSWD: /home/..your..path../net.sh %sudo ALL=(root) NOPASSWD: /home/..your..path../die.sh
**3.**將腳本 b) c) 的所有者更改為 root:
$ sudo chown 700 /home/ham/..your..path../net.sh $ sudo chown 700 /home/ham/..your..path../die.sh;
**4.**在 polkit 中為 gnome-boxes 創建一個規則。答案是:“怎麼做?” 在這裡:simple_polkit_rule
**5.**編輯文件:
- org.gnome.Boxes.service
Exec=/home/..your..path../start.sh
- org.gnome.Boxes.desktop
Exec=/home/..your..path../start.sh
**6.**現在通過點擊快捷圖示執行 gnome-boxes 應用程序。完成的。當您關閉 gnome-boxes 應用程序時,我自己添加了自動關閉連接。
您可以使用一個提示符簡單地執行任何兩個或多個命令,
sh -c
因此在您的情況下您可以編寫pkexec sh -c 'virsh net-start default && /home/user/program'
此方法在命令行和桌面文件中對我有用,讓我知道它是否適用於腳本