AIX 에서 암호를 변경하는데...
글쓴이: sauron / 작성시간: 월, 2011/03/14 - 11:04오후
UNIX 중 AIX 에서, 자동으로 사용자의 암호를 바꿀려고 합니다.
그래서 popen 을 사용하는 _PipeWrite.exe 를 만들었읍니다.
소스는 이렇습니다.
#include<stdio.h>
int main(int ArgCnt, char* AargVal[])
{
if(ArgCnt<3)
{
printf("※ Need 2 Arg('Command', 'Data To Write')\n"); return 0;
}
FILE* VP_File =popen(AargVal[1],"w");
int VI_RetCode=0;
int i =2;
for(;i<ArgCnt;++i)
{
VI_RetCode=fprintf(VP_File,"%s\n",AargVal[i]);
printf("## Write Result=%d: %s\n",VI_RetCode,AargVal[i]);
}
fflush(VP_File); pclose(VP_File);
}
이것을 _PipeWrite.exe 이라는 실행파일로 만든 다음에, 아래 명령을 실행하였읍니다.
./_PipeWrite.exe 'passwd test1 1>my.txt' 1234 1234
원래 대로라면 사용자의 입력을 기다리지 않고, test1 의 암호가 1234 로 변경되어야 합니다.
그런데 passwd 명령을 콘솔에서 실행할 때와 같이, 자꾸 2 회 입력을 기다리고 있읍니다.
이상한 것은 저 소스는 리눅스에서는 정확하게 동작하고 있는 소스입니다.
그런데 AIX 에서는 먹혀들지 않네요. 사용되는 셸은 Korn Shell(/usr/bin/ksh) 입니다.
뭔가 이상해서 사용자의 입력을 받는 _Input.sh 를 아래처럼 만들고,
#!/usr/bin/ksh
echo "#### Enter Data."
sleep 2
read VS_Data
echo $VS_Data
./_PipeWrite.exe "_Input.sh" TestData 를 실행하면, 또 정상 동작합니다.
그러니까 사용자가 TestData 를 입력한 것처럼 동작을 한다는 것이지요.
이것은 _PipeWrite.exe 에는 이상이 없다는 뜻인데, passwd 와 관련이 있지 않나 생각합니다만,
확실히는 잘 모르겠읍니다.
혹시 UNIX 에서 이런 현상 겪으신 분들 있으시면 고견을 청합니다.Forums:


댓글 달기