2016-05-19 5 views
-2

1つのリモートサーバから実行され、サーバにアクセスし、特定のプロセスのtopコマンドを実行することによってデータを取得するperlスクリプトを1つ作成しました。しかし、私はスクリプトを実行しようとするたびに私は以下のエラーが発生しています。悪いインタプリタ:perlスクリプトにそのようなファイルやディレクトリがありません(perlスクリプトの初心者用)

./script_GS.pl -bash: ./script_GS.pl: /usr/local/share/perl^M: bad interpreter: No such file or directory スクリプトは次のように作成しました。

#!/usr/bin/perl 
use lib "/usr/CSV-2/lib"; 
use lib "/usr/share/lib"; 
use lib "/usr/local/lib/perl/5.10.1/auto/"; 
use lib "/usr/share/man/man3/"; 
use lib "/usr/local/share/man/man3/"; 

my $username = 'root'; 
my $password = 'xxxxxxxx'; 
my $ip = '1.1.1.1'; 
my $TERM ; 
my $ssh = Net::OpenSSH->new("$username:$password\@$ip", timeout => 30); 
$ssh->system("echo $TERM"); 
$ssh->system("export TERM=xterm"); 
my ($CPU,$stderr) = $ssh->capture("top -b | head -n 8 | grep -w gis | awk '{  
print \$6}' "); 

print "CPU:".$CPU." "; 

高齢者は助けてください。私は取得しています

エラーは、Windowsの行末を持って

./Script_GS.pl 
Can't locate object method "new" via package "Net::OpenSSH" (perhaps you 
forgot to load "Net::OpenSSH"?) at ./Script_GS.pl line 12. 
+5

あなたの質問に対する回答があります。新しい質問がある場合は、新しい質問で質問してください。 (または単に答えを検索する)。 – hobbs

答えて

2

ですが、Unixシステム上でスクリプトを実行しています。

は、この問題を解決するには、 dos2unix script_GS.plを使用することができ、またはそれは vi script_GS.pl、使用できない場合は、編集者、タイプ :set ff=unixに、そして、その後、 :wqを入力し、再度Enterキーを押します。

+0

私は同じことをしたし、私は今、下にエラーを取得しています。 -bash:./Script_GS.pl:/ usr/local/share/perl:悪いインタプリタ:そのようなファイルやディレクトリはありません –

+0

@LiveCom: '/ usr/local/share/perl -v'の出力は何ですか? – mob

+0

@Stevieb私はあなたが言っていたと思う..私はそれを訂正しましたが、私はスクリプトモードで上記のように別のエラーを表示しました –

0

改行を変更せずに、WindowsからUnix/Linuxにファイルを転送しました。 (ascii-mode in ftp)

後でそれを行うにはたくさんのツールや方法があります。 VIに

:%s/^M//g 

^Mを入力するには、次のタイプ

はCtrl-V +

+1

':set ff = unix'も同様に動作します。 – stevieb

0

をENTERあなたのperlスクリプトは、ネットを検出していないことが表示されます: :OpenSSHモジュール。このモジュールを再インストールすると役立ちます。また、 "use Net :: OpenSSH;"インポートするライブラリコードの上に表示されます。

1

明らかに、あなたはNET :: SSHをインポートするのではなく、それを使用しています。 java.sql。*パッケージをインポートせずにjavaでJDBC connを使用するようなものです。

何かのように使用Net :: OpenSSH;スクリプトの先頭にあるはこのエラーを修正するはずですが、あなたが本当に初心者であれば、@ INCなどで見つけることができないようなエラーを得るように準備してください。したがって、高度なperlパッケージであるNET :: OpenSSHを使う前に、基本的なperlレッスンを最初に取得する必要があります。

関連する問題