Linux 対話型コマンド自動化(SCP)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
yasu

Linux 対話型コマンド自動化(SCP)

#1

投稿記事 by yasu » 16年前

yasuです。

scpの自動化コマンドをC言語にて作成したいのですが、
うまくいきません。

自動化に成功した方がいらっしゃれば、組み方を教えてください。


【現状】
     1)擬似端末を使用しcp -i rm -i等のコマンドは自動化○
2)同一のコマンドにてscpを実行すると自動化×
        ※記事端末を作成後、子プロセスにてscpを実行しているがなぜかscpの入出力が
         コマンドをたたいた端末につながっている。

【ソース】
#define ANS_PASSWD "XXX"
#define ANS_YES "yes\n"
#define Q_RM "rm: remove"
#define Q_SCP "XXX@XXX's password:"

int main () {
char *slaveTermName = NULL;
char buf[BUFSIZ + 1];
char envSet[BUFSIZ];
int masterDp, slaveDp,pid,n;


// if(!fork()){

masterDp = open( "/dev/ptmx" ,O_RDWR );

grantpt(masterDp);

unlockpt(masterDp);

slaveTermName = (char *)ptsname(masterDp);

sprintf(envSet,"SSH_TTY=%s",slaveTermName);

setsid();
putenv(envSet);

pid = fork();
if (!pid) {

slaveDp = open(slaveTermName, O_RDWR, 0);

ioctl(slaveDp, I_PUSH, "ptem");

ioctl(slaveDp, I_PUSH, "ldterm");

close(masterDp);

dup2(slaveDp, 0); dup2(slaveDp, 1); dup2(slaveDp, 2);

system("scp -p AAA XXX@XXX:BBB");
//system("rm -i AAA");
close(slaveDp);
exit(0);
}

n = read(masterDp,buf,sizeof(buf) -1 );
//if (strncmp(buf, Q_RM,strlen(Q_RM)) == 0){

//if (strncmp(buf, Q_SCP,strlen(Q_SCP)) == 0){
fprintf(stdout,"ANSWER = %s \n",ANS_PASSWD);
//write(masterDp,ANS_YES,sizeof(ANS_YES));
write(masterDp, ANS_PASSWD, sizeof(ANS_PASSWD));
//}
wait(0);
exit(0);

//}

exit(0);

}/* end main */

もぐりん

Re:Linux 対話型コマンド自動化(SCP)

#2

投稿記事 by もぐりん » 16年前

マルチポストは止めましょう。

http://oshiete1.goo.ne.jp/qa4753412.html

閉鎖

“C言語何でも質問掲示板” へ戻る