SFTP는 SSH의 일부인 FTP 하위 시스템으로 암호화된 파일 전송을 수행할 수 있습니다. 지난 주에 나는 제대로 파일을 전송하지 SFTP에 대한 2 문제가 있었다. 한 경우 OpenVOS는 파일의 출처였고 다른 경우에는 OpenVOS가 파일을 수신했습니다. 두 경우 모두 ASCII 데이터가 포함된 파일과 Microsoft Windows와 OpenVOS가 텍스트 파일에서 선을 종료하는 방식의 차이점과 관련이 있었습니다.
OpenVOS를 소스로 시작해 보겠습니다. 즐겨찾는 편집기로 텍스트 파일을 만들면 순차적인 파일을 만듭니다. 예를 들어
d test %phx_vos#m16_mas>SysAdmin>Noah_Davids>test 10-09-05 08:13:49 mst 12345 67890
|
display_file_status test name: %phx_vos#m16_mas>SysAdmin>Noah_Davids>test file organization: sequential file . . . next byte: 20 blocks used: 1 . . . record count: 2 data byte count: 10
|
dump_file test %phx_vos#m16_mas>SysAdmin>Noah_Davids>test 10-09-05 08:14:07 mst블록 번호 1000 00053132 333435FF 로 00050005 36373839 |.. 12345....6789|010 30FF 로0005 FFFFFF FFFFFF FFFFFF FFFFFF |0...| 020 FFFFFF FFFFFF FFFF FFFF FFFF FFFF FFFF |...| = FF0 FFFFFF |...............| 준비 완료 08:14:07 |
C:Documents and SettingsnoahMy Documentstemp>"C:Program FilesPuTTYpsftp" [email protected] Using username "nd". [email protected]'s password: Remote working directory is /SysAdmin/Noah_Davids psftp> get test test.txt remote:/SysAdmin/Noah_Davids/test => local:test.txt psftp> quit C:Documents and SettingsnoahMy Documentstemp>dir Volume in drive C has no label. Volume Serial Number is 38B1-9C13 Directory of C:Documents and SettingsnoahMy Documentstempblog - sftp 08/27/2010 01:50 PM <DIR> . 08/27/2010 01:50 PM <DIR> .. 08/27/2010 01:50 PM 12 test.txt 1 File(s) 12 bytes 2 Dir(s) 39,471,644,672 bytes free |
%phx_vos#m16_mas>SysAdmin>Noah_Davids>pc1.txt 10-09-05 08:52:21 mst 000 61626364 650D0A66 6768696A 0D0AFFFF |abcde.. fghij....| 010 FFFFFF FFFFFF |...| = FF0 FFFFFF |...............| 준비 완료 08:52:21 |
%phx_vos #m16_mas>SysAdmin>Noah_Davids>pc1.txt 10-09-05 08:54:25 mst abcde fghij 준비 완료 08:54:25 |
test_system_calls tsc: s$attach_port p pc1.txt tsc: s$open tsc: s$seq_read p Buffer length = 6 00000000 61626364 650D |abcde. | tsc: s$seq_read p Buffer length = 6 00000000 66676869 6A0D |fghij. |
|
# cr.pl begins here # # cr # version 1.0 10-08-27 # use strict; use warnings; use Getopt::Long; my ($inFile, $outFile, @files, $add, $remove); my ($INFILE); my ($result, $count, $verbose, $addremove); $result = GetOptions ('in=s' => $inFile, 'out=s' => $outFile, 'add' => $add, 'remove' => $remove, 'verbose=s' => $verbose); if (($result != 1) || !defined ($inFile) || !defined ($outFile)) { print "nnUsage:n"; print "perl cr.pl -in PATH -out PATH [[-add] | [-remove]] [-verbose]}n"; exit; } if (defined ($add) && defined ($remove)) { print "You can only specify -add or -remove not bothnn"; print "nnUsage:n"; print "perl cr.pl -in PATH -out PATH [[-add] | [-remove]] [-verbose]}n"; exit; } @files = glob ($inFile); if (@files < 1) {print "nNo files found for " . $inFile . "nn";} if (@files > 1) {print "nMore than 1 file found for " . $inFile . "nn";} open (OUT, ">".$outFile) || die "Can't open output file " . $outFile . "nn"; open ($INFILE, $files[0]) || die "Can't open input file " . $files[0] . "nn"; if (!defined ($verbose)) { $verbose = -1; } $count = 0; while ($_ = <$INFILE>) { if (defined ($remove)) { s/r//; print OUT $_ ; } else { s/n//; print OUT $_ . "rn"; } $count++; if (($verbose > 0) && ($count % $verbose) == 0) { print "Line " . $count . " of " . $files[0] . " processedn"; } } close $INFILE; #
|