ネットが遅くてイライラしてない!?

su - でパスワードをスクリプト内に記述して自動入力したいと思っています。
manを参照したところ該当の方法がわかりませんでした。
どうすればよいでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

expectとかを使えば幸せになれそうですよ。


詳細はぐぐって見てね。

それにしても↓の回答は何なのかね?
てか回答になって無いし。
質問に答える気無いなら書き込みしなけりゃいいのに。
IT土方の人ってこういう人多いんだよなー
    • good
    • 2

sudoを使うべき

この回答への補足

期待した回答が得られないため別の場所で聞いて見ます。

補足日時:2008/10/26 22:19
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qシェルスクリプトでパスワードを入力する方法について

いつもお世話になっております。
シェルスクリプトでパスワードの入力が必要なコマンドを自動化したい場合にどの様に書けばよいのでしょう?
単純にコマンドの次の行にパスワード入れても実行されそうも無いので、何か別のコマンドで出来るのでしょうか?

Aベストアンサー

リダイレクトで出来る場合も有りますよ。

xxコマンド <EOF
xxxパスワード
EOF

EOFと言う文字が出るまで文字を送るって奴ですね。
リダイレクトでダイレクトに送るとコマンドの起動パラメータになってしまうので
間接的に送ってあげる訳です。上記の場合、改行も含んでいます。

ApacheのSSL起動の時のパスワード入力に使っていた事があります。

Q自動起動シェルで「su - user -c "command"」が実行できない

初めて質問いたします。
よろしくお願いします。

OS:solaris8

OSの起動・停止時に自動起動させたいコマンドがあったので、
以下のシェル(testsh)を作成し、/etc/init.dに置き、
/etc/rc0.dにtestshに対しK99testshの名称でシンボリックリンクを作成、
/etc/rc3.dにtestshに対しS99testshの名称でシンボリックリンクを作成しました。

OS起動時には、iii.txtが削除され、
OS停止時には、jjj.txtが削除されると思うのですが、
削除されていませんでした。

OSの起動・停止時ではなく、sh -x testshで起動した場合は、
正常に動作しました。

又、suでユーザーを変更しないスクリプトに変えた場合は、OSの起動・停止時にiii.txt、及びjjj.txtが削除されていたので、
起動・停止時のsuが正常に動作していないように思います。

どなたが原因などお分かりでしょうか?
又は、手順で何か間違いなどありますでしょうか?
ご教授よろしくお願いします。


以下シェル(testsh)の内容
#!/bin/sh

case "$1" in
start)
su - user -c "rm /export/home/user/test/iii.txt"
;;
stop)
su - user -c "rm /export/home/user/test/jjj.txt"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

exit 0

初めて質問いたします。
よろしくお願いします。

OS:solaris8

OSの起動・停止時に自動起動させたいコマンドがあったので、
以下のシェル(testsh)を作成し、/etc/init.dに置き、
/etc/rc0.dにtestshに対しK99testshの名称でシンボリックリンクを作成、
/etc/rc3.dにtestshに対しS99testshの名称でシンボリックリンクを作成しました。

OS起動時には、iii.txtが削除され、
OS停止時には、jjj.txtが削除されると思うのですが、
削除されていませんでした。

OSの起動・停止時ではなく、sh -x test...続きを読む

Aベストアンサー

Solaris8の環境設定の問題の可能性が高そうですね。

現在、「su - user」で実行していますが、これだとユーザ別の環境初期化が動きますよね。
.loginや、.profile等の中で、OpenWindowを前提としたモジュール等が起動されているのではないでしょうか。
GUIログインで動いている環境(RunLevel5)ならば、その可能性は高いかと思います。

ためしに、「su user」でやってみたらどうですかね。

これが次の切り分けだと思います。

Qシェルスクリプトの書き方

すみません、シェル初心者なのですが、急を用してまして質問させて頂きました。

シェルスクリプトで
コマンドを実行する前に他のユーザにスイッチしてから
実行するというのを実現したいのですが・・・

#!/bin/csh

コマンド1
コマンド2
・・・

とコマンド1の前に
su コマンドを実行させたいのですが、
パスワードを入力する際、対話式なので
どう書いてよいか分かりません。

よろしくお願いします。

Aベストアンサー

No2です。

私も遅くなりました。
状況として許されるならば,最初にroot権でスクリプトを実行し,root権が必要ないスクリプト(コマンド)は
一般ユーザに切り替えて実行すれば良いと思います。

スクリプトが二つあったとしてroot権で実行するのがA.sh
一般ユーザ権で実行するのがB.shとすると

まずA.shをroot権で実行します。
で,一般ユーザ権で実行させたい部分(B.sh)をA.shの中で
実行すればよいのですが下記方法で実行して下さい。
--
su - $一般ユーザアカウント -c './B.sh'
--

rootから一般ユーザになる分にはパスワードの入力がいらないのでパスワードを渡さず,rootと一般ユーザの権限切替ができると思います。

--部分解説--
su - $一般ユーザアカウント -c './B.sh'

su - $一般ユーザアカウント
⇒なりたいアカウントの環境を引き継いでユーザ変更を実施する。
su -c './B.sh'
⇒-cの後に続くコマンドをユーザ変更をして実行する。但し,一回限り。


以上で説明になってますか?

No2です。

私も遅くなりました。
状況として許されるならば,最初にroot権でスクリプトを実行し,root権が必要ないスクリプト(コマンド)は
一般ユーザに切り替えて実行すれば良いと思います。

スクリプトが二つあったとしてroot権で実行するのがA.sh
一般ユーザ権で実行するのがB.shとすると

まずA.shをroot権で実行します。
で,一般ユーザ権で実行させたい部分(B.sh)をA.shの中で
実行すればよいのですが下記方法で実行して下さい。
--
su - $一般ユーザアカウント -c './B.sh'
--

rootか...続きを読む

Qgrepで検索文字列が完全一致した行だけ取り出す方法

grepの文字列検索で検索文字列が単語として、完全一致した行だけ取り出す方法はないでしょうか?

通常は
grep hoge hoge.txt

と打つと、hogeが含まれる行が出力されますが、今回は含まれる行ではなくて完全に文字列が一致した行だけ取り出したいのです。

例えばhoge.txtの中に
cc ghoge
kkl hogem
jjll hoge
という3行があったとしたら最後の行でhogeという文字が空白で区切られた行だけ取り出したいのです。

何かよい方法があれば教えてください

Aベストアンサー

-w オプションじゃだめですか?

参考URL:http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

Qroot権限の実行コマンドを通常ユーザーで実行

root権限に限らないのですが、他のユーザーの権限でしか実行できないコマンドを自分で実行する方法が知りたいのです。
と言っても、rootや他ユーザーのパスワードを知っているという前提です。

例えば、通常ユーザーで作業をしているときに、root権限で行う必要のあるコマンドを実行したいとします。
今は、suでログインしてから実行していますが、shellスクリプトで実行したいと思っています。

どういったshellスクリプトになりますでしょうか?

Aベストアンサー

> 今回やろうと思ってるのは、suでログインしてから、いくつかの操作を行いたいので

であれば、そのいくつかの操作をまとめてシェルスクリプトにして、
それを su の -c に渡せば良いですね。

例えば、rally というユーザで、シェルスクリプト名が do_rally.sh とします。
スクリプトに実行権限がついていなければ

% su - rally -c "sh do_rally.sh"

という感じ。実行権限がついていれば

% su - rally -c do_rally.sh

で良いです。

ただ、最低一回はパスワードの入力があるので、su を使っている限りは
それからは逃れられません。

# ちょっと遅くなったので、もう sudo を使っているかな?

QUNIXシェルの途中でユーザー切り替え

UNIXシェルの途中でユーザーを切り替える方法はありますか。

例)
 ・ユーザAで先頭100行を実行し、残りはユーザBで実行など・・・。

 ※suできれば良いのですが、対話形式のパスワード入力を促されてしまいますよね・・・。

Aベストアンサー

#3です。
>これを一つのシェルにして、都度ログインしている部分、及び、コマンド実行部分を自動化したい・・・、と言うのが趣旨です。
>それで、まとめたシェルについては、rootで実行ではなくて、一般ユーザで行ないたい・・・。
>という流れとなります。ニュアンスは伝わりましたでしょうか。

伝わってますよ。その前提での回答です。回答を良くお読みください。cmdaとcmdbを並べた親コマンドを作ってそれを一般ユーザーで実行します。
ただし、都度ログインということはログイン時の環境変数設定とかも影響するかもしれないので、必要に応じて、cmda, cmdb の先頭で、source ~usera/.profile などを実行する必要があります。

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

Q対話型のコマンドで入力する値をスクリプトに盛り込んで自動化したい

今まで変更した各種設定を一気に行うシェルスクリプトを作成して、サーバーを再セットアップしてもすぐに今までどおり使えるようにしようとしています。
スクリプト中に対話型のコマンドを記述すると、そこで処理が中断して、入力待ち状態になってしまいます。
しかし、入力値は大抵いつも同じですので、これをスクリプト中に記述して、処理が中断する回数を極力減少させたいと考えています。

passwdコマンドをechoコマンドと組み合わせて次のようにやってみました。
# echo "xxx
xxx" | passwd user

しかし次のように失敗してしまいました。
Changing password for user user.
New password: Retype new password:
New password:
New password:
passwd: Conversation error

エラーメッセージより再入力がうまくできていないようです。
さらに3回目の入力が求められていますが、これも謎です。

このような対話型のコマンドとその入力値を全部シェルスクリプトに記述するなどして、処理を自動化する方法をご存知の方は、ぜひ教えてください。

今まで変更した各種設定を一気に行うシェルスクリプトを作成して、サーバーを再セットアップしてもすぐに今までどおり使えるようにしようとしています。
スクリプト中に対話型のコマンドを記述すると、そこで処理が中断して、入力待ち状態になってしまいます。
しかし、入力値は大抵いつも同じですので、これをスクリプト中に記述して、処理が中断する回数を極力減少させたいと考えています。

passwdコマンドをechoコマンドと組み合わせて次のようにやってみました。
# echo "xxx
xxx" | passwd user

し...続きを読む

Aベストアンサー

>サーバーを再セットアップすると毎回異なるssh_host_keyを生成するため、このSSHサーバーのクライアントとなりうるホストのknown-hostsを更新する処理が必要になり、これを初期設定スクリプト中で行いたいと考えています。

ssh_host_keyが毎回変わってしまうということであれば、今あるssh_host_keyをスクリプト中においてて、変わったssh_host_keyと入れ替えてしまえばいいんじゃないんでしょうか。
そうすれば、相手側のホストにファイルを追加したりしなくてすみます。

個人的にはそこまでして自動化する必要があるかどうか疑問ですが。
実際そのスクリプト自体は手動でキックするのでしょうし。

結局のところ、セットアップした状態を、GhostとかTrueImageといったイメージングソフトでバックアップしておいて、そこからリカバリするほうが一番簡単な話のような気がします。

Qsqlplusで表示が変なので、出力を整形したい。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------

上記のように意味不明な形式で出てきます。

例えばこんな風に

select カラム1,カラム2,カラム3 from hoge;

カラム1 1の値
---------------------------
カラム2 2の値
---------------------------
カラム3 3の値

等のように分かりやすく表示できないでしょうか?

ちなみにOracle9iR2を使用しています。
sqlに関するツールは使用できないルールでして、あくまでsqlplusのコマンド上でみやすくしなければなりません。

分かりづらくですいませんが、皆さま、ご教授お願いします。

いつもお世話になっています。

サーバにアクセスしてsqlplusで、
データを調べたいのですが、
出力形式が見づらくて困っています。

よくわからいのですが、
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
---------------------------
1の値 2の値
3の値
---------------------------
カラム名1
---------------------------
カラム名2
---------------------------
カラム名3
-----------------------...続きを読む

Aベストアンサー

SQLPLUSを起動して、

SQL>set linesize 列数

でどうだ。

SQL>show linesize

で確認ができる。

QFTPコマンドでディレクトリごとファイル移動できるコマンドはありますか?

タイトルどおりなのですが、FTPでファイルを転送する際に、サブフォルダを含むディレクトリごとファイル転送するコマンドはありますでしょうか。
ディレクトリの中にあるすべてのファイルを移動したいのですが、サブフォルダがたくさんあるので、わざわざディレクトリの場所へ移動してmputを繰り返すのはめんどうで仕方ありません。
よろしくお願いします。

Aベストアンサー

ご使用になるOS環境が書いてないのですが、Linux,BSD等ならncftpで、get -R dir。
Windowsならffftpを使えば良いと思います。


人気Q&Aランキング