[완료] Segmentation fault 에러 문제

babomose의 이미지

현재 운영 관련해서 업무를 보고 있습니다.

최근 보안문제 때문에 FTP를 사용하기 위해서 암호화를 하라는 위의 명령에 따라서 FTP 암호화 테스트를 하고 있습니다.

사실 단순하게 C로 코딩해서 시스템 계정과 패스워드를 숨기려고 하는데요.

"Segmentation fault"가 발생합니다.

프로그래밍에 대해서는 대학교 때 배운 책한권이 전부라서 많이 부족합니다. 고수님들의 도움을 요청드립니다. ㅠ

감사합니다.

질문 1. Segmentation fault 에러 해결책이 궁금합니다. ㅠ

질문 2. Windows, Linux and Unix 환경에서 사용하게 될 프로그램인데 만약 필요한 헤더파일이 시스템에 없다면 따로 서버에 추가해 줘야 하는지?
추가한다면 어느 위치에 추가해야 하는지 궁금합니다.

NOTE : ID와 Password를 c코드로 숨기고 ftptrans.sh라는 스크립트를 이용해 ftp를 사용하는 용도로 개발 중입니다.

--------------------- 실제 C 소스 코드 ------------------------
#include
#include
#include # exit, system
#define MAXSTR 50 # 매크로 상수
#define USERNAME "test" # ID
#define PASSWORD "abc1231!" # Password
typedef struct { # 구조체 타입 정의
char Username[MAXSTR];
char Password[MAXSTR];
char File_Type[MAXSTR];
char Trans_Type[MAXSTR];
char File_Name[MAXSTR];
char Source_Loc[MAXSTR];
char Dest_Loc[MAXSTR];
} Struct_Info; # 구조체 이름이 Struct_Info
main (int argc, char *argv[] )
{
int Return_code, FLAG=0;
char Result[MAXSTR*3];

Struct_Info stinfo; # stinfo라는 이름의 구조체를 선언
strcpy (stinfo.File_Type, argv[1]); # 문자열을 복사하는 함수 strcpy (주소부터 널까지 복사)
strcpy (stinfo.Trans_Type, argv[2]);
strcpy (stinfo.File_Name, argv[3]);
strcpy (stinfo.Source_Loc, argv[4]);
strcpy (stinfo.Dest_Loc, argv[5]);
strcpy (stinfo.Username, USERNAME);
strcpy (stinfo.Password, PASSWORD);
if ((strcasecmp(stinfo.File_Type,"as")==0)||(strcasecmp(stinfo.File_Type,"bi")==0))
# strcmp 두문자열이 일치하면 0, 아니면 1 또는 -1 리턴
{
FLAG=1; # as 또는 bi 문자열의 stinfo.File_Type에 있으면 Flag에 1을 넣음
}
else
FLAG=3;
switch (FLAG) { # switch 문시작
case 1: # FLAG의 값이 1일 경우 아래의 명령 실행
sprintf (Result, "./ftptrans.sh %s %s %s %s %s %s %s&",stinfo.Username, stinfo.Password,stinfo.File_Type,stinfo.Trans_Type,stinfo.File_Name,stinfo.Source_Loc,stinfo.Dest_Loc );
Return_code = system (Result); # Result 변수에 명령어가 들어감. sprintf => 문자열배열에 출력가능
if (Return_code < 0) # Script는 정상적으로 수행되면 0을 리턴 비정상이면 1 ($?)
printf ("Transfering FAIL \n" );
else
printf ("Transfering SUCCESS \n");
break;
default :
printf ("There were no any actions, Please check again !! \n");
break;
}
exit (0); # 프로그램 종료
}

----------------- ftptrans.sh 소스 코드 --------------------------

#================================================================================================================
# Log transferring Fuction
#================================================================================================================
IP_ADDR=192.168.10.85
USER_NM=$1
PASSWORD=$2
SOURCE_LOC=$6
FILE_NAME=$5
DEST_LOC=$7
if [ $4 = "mput" -o $4 = "mget" ]
then
FILE_NAME="*$5"
fi
ftp -n -v < #ftp -n -v < /dev/null
open $IP_ADDR
user $USER_NM $PASSWORD
$3
prompt on
lcd $SOURCE_LOC
cd $DEST_LOC
$4 $FILE_NAME
prompt off

!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.