-4

perl スクリプトでハードコードされたユーザー名/パスワードを回避する方法

私はperlを初めて使用します。多くのことを試しましたが、何もうまくいきませんでした。設定ファイルからユーザー名/パスワードを読み取る方法を提供してください。ここで何を変える必要があるか、

以下は私のperlスクリプトです:

#!/usr/bin/perl -w
use strict;
use warnings;
use Net::SFTP::Foreign;
my $server="sftp.abcpvt.com";
my $remote="outgoing_folder";
my $user="auser";
my $LOCAL_PATH="/home/sara";
my $file_transfer="DATA.ZIP";
my $password="abc123"
my %args = (user => "$user", password => "$password");
chdir $LOCAL_PATH or die "cannot cd to  ($!)\n";
my $sftp = Net::SFTP::Foreign->new(host=>$server,user=>$user,password=>$password) or die "unable to connect";
$sftp->error and die "SSH connection failed: " . $sftp->error;
$sftp->get("$remote/$file_transfer","$LOCAL_PATH/$file_transfer") or die "unable to retrieve file".$sftp->error;
undef $sftp;
exit;

私の設定ファイルには以下のものが含まれています。

Username = “auser”;
Password = “abc123”;
Time_out=180;
Port = 22

私は以下のことを試しました、

my $user=get_credentials("/home/sar/config");
my $password=get_credentials("/home/sar/config");


sub get_credentials {
  my ($file) = @_;
  open my $fh, "<", $file or die $!;

  my $line = <$fh>;
  chomp($line);
  my ($user, $pass) = split /:/, $line;

  return ($user, password => $pass);
}

ここではパスワードしか取得できず、ユーザー名は取得できません…</p>

perl スクリプトでユーザー名/パスワードを使用するためのサンプル コーディングを教えてください。

4

1 に答える 1

0

このようなものが欲しいと思います。

sub get_config {
  my ($file) = @_;
  open my $fh, "<", $file or die $!;

  my %config;
  while (<>) {
    chomp;
    next unless /\S/;

    my ($key, $val) = split /\s*=\s*/;
    $val =~ s/^"//;
    $val =~ s/"$//;
    %config{$key} = $val;
  }
  return \%config;
}

my $config = get_config('/home/a911091/config');

my $user = $config->{Username};
my $pass = $config->{Password};

しかし、CPAN から構成ファイル モジュールを探す方がはるかに良いでしょう。

于 2013-09-19T10:17:21.833 に答える