Perl 經常用於開放平台上的系統配置和管理自動化, 但也可以靈活運用在主機系統上。本文將介紹CPAN上與z/OS相關的三個Perl模組Net::FTP、 MVS::JESFTP和Net::Telnet,並結合執行個體講解其用法和注意事項。使用這些模組將有助於提高z/OS系統管理員和測試人員的工作效率。
1 簡介
在日常工作中,通常會使用不同的工具在PC與z/OS系統之間進行互動。我們可以使用FTP上傳或下載各種資料集。 主機的FTP server還提供了與JES進行互動的功能[1],我們便能在PC端直接使用FTP提交JCL作業到主機運行,並將作業在Spool中的輸出接收到 PC。另外,利用常用的網路連接工具(RLogin/SSH/Telnet)能與z/OS Unix終端互動[2],從而實現遠程執行Unix或者TSO命令。
Perl是一種指令碼語言,有著強大的文本處理能力和靈活的文法形式。同時,Perl也是開放平台上重要的系統管理工具。此外,Perl的綜合典藏庫 CPAN[4]的資源特別豐富,提供了上萬個模組,涉及到系統管理的各個方面[5]。這些模組不僅成為了系統管理員的工具 + 生產力,也彙集了他們的實踐經驗。 本文將結合三個CPAN模組,介紹如何使用Perl來完成PC與主機之間常見的互動任務。
2 使用Net::FTP模組下載資料
Net::FTP[6]是隨Perl語言一起發布的核心模組。 這個模組實現了一個簡單的FTP用戶端,封裝了RFC959(FILE TRANSFER PROTOCOL)的常用介面。
Net::FTP主要介面的用法如下[2]:
use Net::FTP;
$ftp = Net::FTP->new(“ftp.host.com”) or die “Can’t connect: $@\n”;
$ftp->login($username, $password) or die “Couldn’t login\n”;
$ftp->cwd($directory) or die “Couldn’t change directory\n”;
$ftp->get($filename) or die “Couldn’t get $filename\n”;
$ftp->put($filename) or die “Couldn’t put $filename\n”;
接下來將介紹如何使用Net::FTP從主機下載及上傳不同類型的資料:Unix檔案,PS,PDS類型的資料集。
2.1 下載上傳Unix檔案
z/OS 系統提供的USS(UNIX System Service)[2]滿足POSIX標準,提供了樹型檔案結構。我們可以直接調用get介面下載USS系統 中的Unix檔案。比如,需要從USS下載一個記錄檔failures.log,它位於目錄/user/log,範例程式碼如下:
$pathname = “/user/log”;
$logfile = “failures.log”;
$ftp = Net::FTP->new(“ftp.host.com”, # FTP服務端地址
Timeout => 30, # 放棄串連前等待秒數
Debug => 1) # 將輸出所有命令到標準錯誤
$ftp->login($username, $password);
$ftp->ascii(); # ASCII方式傳輸,CRLF將會被自動轉換
$ftp->cwd($pathname);
$ftp->get($logfile);
$ftp->close();