쉘 스크립트는 FTP 업로드 및 다운로드 파일을 실현하기

얼마 전에 필요가 검증을위한보다 그들에게 관련 정보에 대한 고객의 FTP 서버로 업로드 특정 정보 데이터 추출의 검증 이후에 우리의 플랫폼에서 작동합니다. 이 정보의 호스트는 사를 포함으로 채택 된 전략은 호스트,이 호스트 파일 업로드에 다음 대상 FTP 서버에 네 개의 파일의 컬렉션을 생성하는 것입니다.

1, 원격으로 파일을 복사 할 수있는 다른 세 개의 호스트에 호스트 (A) 사이의 신뢰 관계를 설정

로컬 인증 키 #을 생성하는 호스트를 선택 입력 RSA 또는 DSA 키를 생성하도록 선택할 수 있습니다 경우 RSA
[루트 @ linuxmi ~] # 개의 SSH-Keygen은 -t RSA -P ''-f ~ / 스푸핑 / id_rsa_gsg_keypair를> 을 / dev / null 2> & 1
호스트와 더의 수, 당신은 스크립트를 배치 실행을 기대 사용할 수있는 경우, 라인에서 수행하는 세 개의 호스트, 하나 하나 때문에 파일 키를 세 가지 다른 호스트의 기본 사본을 authorized_keys에합니다 #
[루트 @ ~ linuxmi] SSH-복사-ID # -i ~ / 스푸핑 / id_rsa.pub "[email protected] (22) -p는"
[루트 @ linuxmi ~] SSH-복사-ID # -i ~ / 스푸핑 / id_rsa.pub "-p [email protected] (22)는"
SSH - 복사 - ID 번호 -i ~ / 스푸핑 / id_rsa.pub "22 [email protected] -p는"[루트 @ ~ linuxmi]
# 이 시스템은 대상 호스트에 신뢰 관계의 구축이 성공적으로 입력 B의 출현, 루트 암호 C, D, 및 암호를 입력 입력은,이 제안입니다 대표
로, 기계에 로그인 해 이제 22 루트 -p "ssh를 '@ 192.168.1.B는 ' "및 체크인 :

  스푸핑 / authorized_keys에

우리는 당신이 기대되지 않은 별도의 키를 추가하지 않은 확인합니다.

2. 대상 FTP 서버에 파일을 업로드하는 스크립트를 구축

  고객 수요가 아침에 매일 데이터를 업로드 전날, 우리는 데이터 파일이 오늘 날짜 _ 호스트 이름 _Result.csv 유형을 기반으로 생성합니다.

# 다음은 스크립트의 내용을 보여줍니다
[@ 루트를 linuxmi GETFILE] 고양이 upload_csv.sh의
#! / 빈은 / bash는
이 스크립트는 클라이언트 FTP 서버에 정기적으로 매일 업로드 데이터 파일을 생성하는 데 사용됩니다 #

# 홈 디렉토리를 지정 곳에 파일 업로드
SRCDIR = / tmp를 / test_jr / GETFILE / 파일 /
디렉토리 # FTP 서버를 종료 원하는 업로드를 지정
DESDIR = / JRAQ_FILE /

#하는 것을 나타냅니다 피어 FTP 서버의 사용자 이름 및 암호
는 USER = finftp
PASSWD = "ABC @ 123"
IP 번호 대상 FTP 서버 지정
IP가 = 3.3.3.3
# 대상 FTP 서버 포트를 지정을, 일반적으로 기본
포트 = 21

# 날짜 업로드 할 파일을 지정
targetDay = -d '날짜를 "-1 일 "+ "%의 Y %의 m % d에"를'

# 업로드 할 파일을 가져
CD를 $의 SRCDIR을
192.168.1.B 192.168.1.C 192.168.1.D에서 호스트에 대한
않습니다
    $ SRCDIR / $ targetDay _ * _ Result.csv ./ : SCP 루트 @에 $ 호스트가
DONE
# 파일 여부를 결정 올바른 얻을
[$? -eq 0]을 || 에코 "복사 romote 파일에 실패, pls는 확인.">> $ SRCDIR / upload_file.log

FTP 서버에 # 업로드 파일
는 FTP -ivn << EOF
    열기 $ IP $ PORT
    사용자 USER (사용자) $ $의 PASSWD
    바이너리
    CD를 $ DESDIR의
    액정 $ SRCDIR의
    PUT의 $ {} _ * _ targetDay Result.csv이
    종료
EOF를

#判定文件是否上传成功
[$? -eq 0] && "업로드 $ targetDay의 파일을 FTP 서버에 성공적으로 romote되게합니다."에코 >> $ SRCDIR / upload_file.log || "업로드 파일 pls는 확인하지 못했습니다."메아리 >> $ SRCDIR / upload_file.log

3, 트랜스 코딩을 사용하는 것이 가능하다

  CSV 파일은 엑셀에서 열 예정이다, Excel에서 UTF-8 인코딩 된 파일 열리지 만, 모든 중국 이름은 왜곡이다, 당신은 엑셀 인코딩 된 UTF-8 형식의 GBK로 변환으로, 트랜스 코딩을 사용할 필요가 그것은 완벽한 열 수 있습니다.

[루트 @의 linuxmi ~]의 iconv -futf8 -tgbk -c -o file2.csv file1.csv
파일 # 1 FILE1 코드 변환 될
# 후에 파일 2의 트랜스 파일명
# 그 형식에서 -f --from 코드 즉 변환
하는 포맷으로 # -t --to 코드
# 출력 파일명 --output -o
몇몇 스트링을 가지고,이 파라미터는 불법 파일을 방지 아닌 경우이를 출력 증가를 무시 -c 오류 문자 번호를 의 iconv 불법 매개 변수 문자열을 발생한 후 문자가 정상이 거기에 트랜스 코딩 된 경우에도, 트랜스 코딩 자동으로 종료됩니다.

추천

출처www.linuxidc.com/Linux/2019-08/159945.htm