SFTP è il sottosistema FTP che fa parte di SSH, permette di fare trasferimenti di file criptati. Nell'ultima settimana ho avuto 2 problemi con SFTP che non trasferiva correttamente i file. In un caso OpenVOS era la fonte del file e nell'altro caso OpenVOS stava ricevendo il file. In entrambi i casi i file contenevano dati ASCII e i problemi avevano a che fare con le differenze tra il modo in cui Microsoft Windows e OpenVOS terminano le linee in un file di testo.
Cominciamo con OpenVOS come sorgente. Se si crea un file di testo usando il proprio editor preferito si crea un file sequenziale. Per esempio
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 mstBlocco numero 1000 00053132 333435FF 00050005 36373839 |..12345…..6789|010 30FF0005 FFFFFFFF FFFFFFFF FFFFFFFF |0...............|020 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................| = FF0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................| pronto 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 61626364650D0A666768696A 0D0AFFFF|abcde..fghij....| 010 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................| = FF0 FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF |................| pronto 08:52:21 |
%phx_vos#m16_mas>SysAdmin>Noah_Davids>pc1.txt 10-09-05 08:54:25 mst abcde fghij pronto 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; #
|