O SFTP é o subsistema FTP que faz parte do SSH, ele permite que você faça transferências de arquivos criptografados. Na última semana tive 2 problemas sobre o SFTP não transferir arquivos corretamente. Em um caso, OpenVOS era a fonte do arquivo e no outro caso, OpenVOS estava recebendo o arquivo. Em ambos os casos, os arquivos continham dados ASCII e os problemas tinham a ver com as diferenças entre Microsoft Windows e OpenVOS terminando linhas em um arquivo de texto.
Vamos começar com OpenVOS como a fonte. Se você criar um arquivo de texto usando seu editor favorito, você cria um arquivo seqüencial. Por exemplo
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>teste 10-09-05 08:14:07 mstBloco número 1000 00053132 333435FF 00050005 36373839 |..12345…..6789|010 30FF0005 FFFFFFFFFF FFFFFFFFFF FFFFFFFFFF |0...............|020 FFFFFFFFFFFF FFFFFFFFFFFF FFFFFFFFFF FFFFFFFFFF |................| = FF0 FFFFFFFF FFFFFFFFFF FFFFFFFFFF 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 FFFFFFFFFF FFFFFFFFFF FFFFFFFF FFFFFFFF |................| = FF0 FFFFFFFF FFFFFFFFFF FFFFFFFFFF 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; #
|