Pro sudo existuje volba -S pro přijetí hesla ze standardního vstupu. Zde je mužský záznam:
-S The -S (stdin) option causes sudo to read the password from
the standard input instead of the terminal device.
To vám umožní spustit příkaz jako:
echo myPassword | sudo -S ls /tmp
Pokud jde o ssh, udělal jsem mnoho pokusů o automatizaci/skriptování jeho použití bez úspěchu. Zdá se, že neexistuje žádný vestavěný způsob, jak předat heslo do příkazu bez vyzvání. Jak již uvedli jiní, nástroj "očekávat" se zdá, jako by byl zaměřen na řešení tohoto dilematu, ale v konečném důsledku je nastavení správné autorizace soukromým klíčem správným způsobem, když se to pokoušíte automatizovat.
Napsal jsem nějaký Applescript, který prostřednictvím dialogového okna vyzve k zadání hesla a poté vytvoří vlastní příkaz bash, jako je tento:
echo <password> | sudo -S <command>
Nejsem si jistý, jestli to pomůže.
Bylo by hezké, kdyby sudo akceptovalo předem zašifrované heslo, abych ho mohl zašifrovat ve svém skriptu a nemusel se starat o opakování hesel s čistým textem. Nicméně to funguje pro mě a mou situaci.
Pro sudo můžete také udělat toto:
sudo -S <<< "password" command
Pro ssh
můžete použít sshpass
:sshpass -p yourpassphrase ssh [email protected]
.
Stačí si nejprve stáhnout sshpass :)
$ apt-get install sshpass
$ sshpass -p 'password' ssh [email protected]