su를 이용해서 로그인을 변경하려 합니다. 변경전의 로그인이 super user가 아니기 때문에 패스워드를 입력받아야하는데, 이 패스워드를 쉘 스크립트 내부에서 명시적으로 정의되길 원합니다. shell상에서 입력은 받을 수 없는 상태입니다.
인자가 아니라 변수를 말씀하시는 건가요?
VARNAME="passwd" su $VARNAME
#!/bin/bash echo $1
...
인자가 아니라 변수를 말씀하시는 건가요? VARNAME="passwd" su $VARNAME
위와 같이 하였으나 역시 password를 물어봅니다. ...
똑!똑!
표준입력에 입력을 어떻게 해야 하는지에 대해 물어보신 것이 아닌지요?
저도 대답해 놓고 조금 이상해서 다시 여쭤봅니다. (_ _)
expect 를 사용하면 될 거 같은데요.
expect 60 "login:" output "root^M" expect 60 "Password:" output "root_password^M"
표준입력에 입력을 어떻게 해야 하는지에 대해 물어보신 것이 아닌지요? 저도 대답해 놓고 조금 이상해서 다시 여쭤봅니다. (_ _)
넵, 그렇습니다.
그렇지만, 표준 입력으론 파일을 읽어드리게 되므로 변수 내지 문자열 타입을 넣어줘야 합니다.
일반 로그인 쉘에서 유저를 변경을 할 때
su - user_name Password:user_passwd
이렇게 입력을 하지 않습니까!
위의 과정을 쉘 스크립트로 옮겨서
변경된 유저로 명령어를 실행하려고 하는 것입니다.
expect가 가장 좋은 방법일듯 싶습니다. 아래는 mysql db 생성할때 제가 쓰던겁니다.
#!/usr/local/bin/expect set user [lindex $argv 0] set passwd [lindex $argv 1] spawn /usr/local/mysql/bin/mysql -p mysql expect "Enter password: " sleep 1 send "password\r" expect "mysql> " send "create database $user;\r" expect "mysql> " send "insert into user values('localhost','$user',password('$passwd'),'n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','','','','','','',''); \r" expect "mysql> " send "insert into db values('localhost','$user','$user','y','y','y','y','y','y','y','y','y','y','n','n');\r" expect "mysql> " send "flush privileges;\r" expect "mysql> " send "exit;\r"
====================== BLOG : http://superkkt.com
expect가 가장 좋은 방법일듯 싶습니다. 아래는 mysql db 생성할때 제가 쓰던겁니다. #!/usr/local/bin/expect set user [lindex $argv 0] set passwd [lindex $argv 1] spawn /usr/local/mysql/bin/mysql -p mysql expect "Enter password: " sleep 1 send "password\r" expect "mysql> " send "create database $user;\r" expect "mysql> " send "insert into user values('localhost','$user',password('$passwd'),'n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','n','','','','','','',''); \r" expect "mysql> " send "insert into db values('localhost','$user','$user','y','y','y','y','y','y','y','y','y','y','n','n');\r" expect "mysql> " send "flush privileges;\r" expect "mysql> " send "exit;\r"
expect는 현재 찾을 수가 없습니다. 참고로 hp-ux입니다.
sephiron wrote:인자가 아니라 변수를 말씀하시는 건가요? VARNAME="passwd" su $VARNAME 위와 같이 하였으나 역시 password를 물어봅니다. ...
죄송합니다. 제가 바보로군요.
#include <sys/types.h> #include <unistd.h> main() { setreuid(0, 0); system("sh /root/shellscript"); }
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
인자가 아니라 변수를 말씀하시는 건가요?[code:1]VARN
인자가 아니라 변수를 말씀하시는 건가요?
Re: shell script에서 인자값 처리를 알려주세요.
$ test.sh Hello~
Hello~
$
...
[quote="sephiron"]인자가 아니라 변수를 말씀하시는 건가요?
위와 같이 하였으나 역시 password를 물어봅니다.
...
똑!똑!
인자가 아니라...
표준입력에 입력을 어떻게 해야 하는지에 대해 물어보신 것이 아닌지요?
저도 대답해 놓고 조금 이상해서 다시 여쭤봅니다. (_ _)
expect 를 사용하면 될 거 같은데요.[code:1]expec
expect 를 사용하면 될 거 같은데요.
Re: 인자가 아니라...
넵, 그렇습니다.
그렇지만, 표준 입력으론 파일을 읽어드리게 되므로 변수 내지 문자열 타입을 넣어줘야 합니다.
일반 로그인 쉘에서 유저를 변경을 할 때
su - user_name
Password:user_passwd
이렇게 입력을 하지 않습니까!
위의 과정을 쉘 스크립트로 옮겨서
변경된 유저로 명령어를 실행하려고 하는 것입니다.
똑!똑!
expect가 가장 좋은 방법일듯 싶습니다. 아래는 mysql db 생성
expect가 가장 좋은 방법일듯 싶습니다. 아래는 mysql db 생성할때 제가 쓰던겁니다.
======================
BLOG : http://superkkt.com
[quote="superkkt"]expect가 가장 좋은 방법일듯 싶습니
expect는 현재 찾을 수가 없습니다.
참고로 hp-ux입니다.
똑!똑!
[quote="taitai09"][quote="sephiron"]인자가
죄송합니다. 제가 바보로군요.
등의 꽁수도 한 번 사용해 보세요.
댓글 달기