web-dev-qa-db-ja.com

シェルスクリプトにパスワードを伝えるにはどうすればよいですか?

私はログインするたびにSudo apt-get updateSudo apt-get autoremoveを実行するスクリプトを作成しようとしました。次のようになります。

#!/bin/bash
(Sudo apt-get update)
(Sudo apt-get autoremove)

しかし、スクリプトを実行するたびに、コンピューターがフリーズします。スクリプトがパスワードを提供するのを待っているからだと思います。次のようなコマンドの後にPASSWD:mypasswordを追加すると動作しますか:

#!/bin/bash
(Sudo apt-get update)PASSWD:mypassword
(Sudo apt-get autoremove)PASSWD:mypassword

または私がすべき他の何かがありますか?方法さえありますか?もしそうなら教えてください!

6
It's Willem

実際にスクリプトにパスワードを含める必要はありません(私が見たところ、パスワードをスクリプトに含めることは一般的にお勧めできません)。代わりに、sudoerファイルを編集して、パスワードを必要とせずにapt-getコマンドを実行できます。

詳細については、 このWebサイト を参照してください。

ターミナルを開きます(ctrl + alt + T

コマンドを入力してください

Sudo visudo

Sudoersファイルタイプの最後

username ALL=(ALL) NOPASSWD: /usr/bin/apt-get

ユーザー名はユーザー名です(もちろん)

このファイルを編集すると、パスワードを入力せずにapt-getコマンドを実行できます。これは、パスワードを入力せずにパッケージをインストールまたはアップグレードできることを意味します。

コンマの後にコマンドへのパスを入力して、このリストに他のコマンドを追加することもできます。コマンドへのパスを見つけるには、ターミナルで次のコマンドを入力します。

which command

Commandはコマンドの名前です(たとえば、reboot)。

3
Rumesh

bash sccriptを開始するコマンド:

#!/ bin/bash

ユーザーのルートパスワードを要求するコマンド:

["$ UID" -eq 0] || exec Sudo bash "$ 0" "$ @"

次にできるコマンドの例:

apt-get update

apt-get upgrade --yes

shutdown -r now

スクリプトの幸運

0
Martijn