kouunさんのプロフィール - はてな
su (新ユーザID)リターン
Password:リターン
whoami
新ユーザID
と表示されれば変更されていることになるのでは?
http://www.amays.com/~mizusawa/namazu_kaisetu/comand.html
知っておきたいUNIXコマンド
例えばログイン名 hatena にユーザ変更する場合、
su - hatena<リターン>
[hatena のパスワード]<リターン>
とすればできると思いますが?
hatena のパスワードが正確でないとエラーになります。
コマンドでやればできます。
でもシェルからやるとパスワードを聞くプロンプトがでてそこで止まるんです。
シェルの中でプロンプトがきたらパスワードを発行するという方法をとらないとだめだと思います。
suコマンドの解説です。
cshのシェルスクリプトからsuコマンドでユーザー変更したいという事だと思いますが、rootユーザーでない限りPasswordは聞かれてしまいます。
http://linux.ascii24.com/linux/linuxcom/2000/07/31/512928-000.ht...
ASCII.jp:ascii24.com一時停止のお知らせ
このような場合sudoコマンドを使い、/etc/sudoersファイルにNOPASSWD指定する事により パスワード無しにユーザー変更しコマンドの実行が可能になります。
スーパーユーザーではないので2番目のやり方はちょっと・・・
パスワード無しにユーザー変更するのではなく、パスワードを入力するプロセスを正常に行うことができるシェルの作成をしたいのです。
http://www.atmarkit.co.jp/flinux/rensai/shell01/whatsshell.html
2つの顔を持つソフトウェア:シェル
答えではないのでポイント要りません。
シェルとシェルスクリプトが混同されているようです。
su.cshをつくり、これを実行します。
このシェルの中身でユーザーを変更したいのです。
http://www.hatena.ne.jp/1067598690#
UNIXユーザーの変更をCシェルから行う方法をお願いします。「#!/usr/bin/csh 改行su - usrid 改行userpass」でこのシェルを実行すると「Password:」というプロンプトがでて.. - 人力検索はてな
su コマンドのパスワード入力コマンドはコンソール入力なので、シェルスクリプトではできないと思います。でもひょっとして以下のシェルスクリプトでできるかもしれません。(やったことないけど・・・)
#!/usr/bin/csh
echo パスワード > psw.tmp
su - usrid < psw.tmp
rm psw.tmp
ありがとうございます
。やっぱりだめみたいです。
URLはダミーです。
手元に環境が無いので試せてはいないのですが、
(echo userpass) | su - userid
でどうでしょうか。これでだめなら
(sleep 1;echo userpass) | su - userid
ならどうでしょう。
昔、シェルスクリプト内でtelnetコマンドを実行し、そのtelnetにパスワードを送り込むテストをした時はこんな感じで出来ていました。
出来なければポイントは結構です。
うーん、だめみたいですね。
ありがとうございました。
http://www.geocities.co.jp/SiliconValley/4137/dir3/expect.html
Scripting Laboratory: Expect
二回目です。
「ここではsuコマンドで他のユーザになり、 そのユーザで何か処理を行って、またもとのユーザに戻る、という処理を Expectで自動化してみます。」
というサンプルがあります。「もとのユーザに戻る」処理を省略すれば行けそうな気がします。
ありがとうございます。動きはTERA TERMのマクロと同じようですね。でも、こういったツールをインストールできない環境にあるのです。
http://www.math.kobe-u.ac.jp/~kodama/tips-expect.html
expect. 対話的なコマンド(telnet,ftp,su等)を自動実行したいとき(Kodama's tips page)
expect を使えば解決できます。
#!/usr/local/bin/expect
spawn su - USERNAME
expect {Password:}
send [lindex $argv 0]¥r
# 別ユーザでのコマンドの実行例:
expect {*>}
send ”echo ¥$USER¥r”
# と、このような感じで expect と send の文を繰り返す
expect {*>}
send exit¥r
というようなスクリプトを書いて呼び出してやればいいはずです。このスクリプトをexpect.sh として、パスワードの書かれたファイルを passwd とすれば、
./expect.sh < `cat passwd`
といった具合にです。
実際、手元の環境ではこれでうまくいきました。
Expect - Expect - Home Page
expect が入ってない場合は、ここから恐らくダウンロードできるかと思います。
それから、上のリンクを辿るとわかるように、csh はよほどの事がない限りは使わない方が無難です。
smilelessさまがどのような意図で、シェルスクリプト内でsuをしたいのかは存じませんが、それは、本質的には、UNIXのコンセプトと反するため、あまりお勧めはしないです。
その気になれば、プロンプト表示を検知したら文字列を流し込むという事も出来ますが。
ただ、その方法は、rootのパスワードを見れる状況に置く事になるので、あまりお勧めはしません。
そのかわり、sudo等を使うのが、本来的だと思いますよ。
尚、半分営業になってしまうのですが、別の質問に出ておりました、OLAPツールの類は私の分野です。 もしよろしければ、行いたい事などをメールしていただければ、それに基づいてのお勧めが出来そうです。
⇒ naguro@mc.neweb.ne.jp
ありがとうございました。
OLAPツールの方はとりあえずどれくらいの種類があるのかとその性能の概要を比較検討するための質問でしたので、もう少ししてからご連絡させていただくかもしれません。
そのときはよろしくお願いいたします。
だめです。できません。