package cwp; import java.sql.*; /** Make a simple "employees" table using DatabaseUtilities. */ public class EmployeeCreation { public static Connection createEmployees(String driver, String url, String username, String password, boolean close) { String format = "(id int, firstname varchar(32), lastname varchar(32), " + "language varchar(16), salary float)"; String[] employees = {"(1, 'Wye', 'Tukay', 'COBOL', 42500)", "(2, 'Britt', 'Tell', 'C++', 62000)", "(3, 'Max', 'Manager', 'none', 15500)", "(4, 'Polly', 'Morphic', 'Smalltalk', 51500)", "(5, 'Frank', 'Function', 'Common Lisp', 51500)", "(6, 'Justin', 'Timecompiler', 'Java', 98000)", "(7, 'Sir', 'Vlet', 'Java', 114750)", "(8, 'Jay', 'Espy', 'Java', 128500)" }; return(DatabaseUtilities.createTable(driver, url, username, password, "employees", format, employees, close)); } public static void main(String[] args) { if (args.length < 5) { printUsage(); return; } String vendorName = args[4]; int vendor = DriverUtilities.getVendor(vendorName); if (vendor == DriverUtilities.UNKNOWN) { printUsage(); return; } String driver = DriverUtilities.getDriver(vendor); String host = args[0]; String dbName = args[1]; String url = DriverUtilities.makeURL(host, dbName, vendor); String username = args[2]; String password = args[3]; createEmployees(driver, url, username, password, true); } private static void printUsage() { System.out.println("Usage: EmployeeCreation host dbName " + "username password oracle|sybase."); } }
Tag Archives: ইউটিলিটি
EmployeeTest2.java: A test case for the database utilities. Prints results formatted as an HTML table.
package cwp; import java.sql.*; /** Connect to Oracle or Sybase and print "employees" table * as an HTML table. * */ public class EmployeeTest2 { public static void main(String[] args) { if (args.length < 5) { printUsage(); return; } String vendorName = args[4]; int vendor = DriverUtilities.getVendor(vendorName); if (vendor == DriverUtilities.UNKNOWN) { printUsage(); return; } String driver = DriverUtilities.getDriver(vendor); String host = args[0]; String dbName = args[1]; String url = DriverUtilities.makeURL(host, dbName, vendor); String username = args[2]; String password = args[3]; String query = "SELECT * FROM employees"; DBResults results = DatabaseUtilities.getQueryResults(driver, url, username, password, query, true); System.out.println(results.toHTMLTable("CYAN")); } private static void printUsage() { System.out.println("Usage: EmployeeTest2 host dbName " + "username password oracle|sybase."); } }
DatabaseUtilities.java: Several general-purpose utilities discussed and used in the chapter.
package cwp; import java.sql.*; /** Three database utilities: * 1) getQueryResults. Connects to a database, executes * a query, retrieves all the rows as arrays * of strings, and puts them inside a DBResults * object. Also places the database product name, * database version, and the names of all the columns * into the DBResults object. This has two versions: * one that makes a new connection and another that * uses an existing connection. * 2) createTable. Given a table name, a string denoting * the column formats, and an array of strings denoting * the row values, this method connects to a database, * removes any existing versions of the designated * table, issues a CREATE TABLE command with the * designated format, then sends a series of INSERT INTO * commands for each of the rows. Again, there are * two versions: one that makes a new connection and * another that uses an existing connection. * 3) printTable. Given a table name, this connects to * the specified database, retrieves all the rows, * and prints them on the standard output. */ public class DatabaseUtilities { /** Connect to database, execute specified query, * and accumulate results into DBRresults object. * If the database connection is left open (use the * close argument to specify), you can retrieve the * connection via DBResults.getConnection. */ public static DBResults getQueryResults(String driver, String url, String username, String password, String query, boolean close) { try { Class.forName(driver); Connection connection = DriverManager.getConnection(url, username, password); return(getQueryResults(connection, query, close)); } catch(ClassNotFoundException cnfe) { System.err.println("Error loading driver: " + cnfe); return(null); } catch(SQLException sqle) { System.err.println("Error connecting: " + sqle); return(null); } } /** Retrieves results as in previous method, but uses * an existing connection instead of opening a new one. */ public static DBResults getQueryResults(Connection connection, String query, boolean close) { try { DatabaseMetaData dbMetaData = connection.getMetaData(); String productName = dbMetaData.getDatabaseProductName(); String productVersion = dbMetaData.getDatabaseProductVersion(); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(query); ResultSetMetaData resultsMetaData = resultSet.getMetaData(); int columnCount = resultsMetaData.getColumnCount(); String[] columnNames = new String[columnCount]; // Column index starts at 1 (ala SQL) not 0 (ala Java). for(int i=1; i
ইউনিক্স – নেটওয়ার্ক কমিউনিকেশন অনুষঙ্গ (Unix – Network Communication Utilities)
রিদওয়ান বিন শামীম
বণ্টনকৃত পরিবেশে কাজ করার সময় রিমোট ইউজারদের সাথে যোগাযোগ করতে অতে পারে, রিমোট ইউনিক্স মেশিনেও প্রবেশযোগ্যতা থাকতে হবে।
নেটওয়ার্কিংকৃত, বণ্টনকৃত পরিবেশে কাজ করছে এমন ইউজারদের জন্য প্রয়োজনীয় হতে পারে এমন বেশকিছু ইউনিক্স অনুষঙ্গ বা ইউটিলিটি আছে, এই টিউটোরিয়ালে এমন কয়েকটি নিয়ে আমরা কাজ করব।
পিং ইউটিলিটি
পিং কম্যান্ড নেটওয়ার্কে পাওয়া হোষ্টে একটি ইকো রিকোয়েস্ট পাঠায়। রিমোট হোষ্ট সঠিকভাবে সাড়া দিচ্ছে কিনা তা এই কম্যান্ড ব্যবহার করে আমরা জানতে পারি। পিং কম্যান্ড যেসব ক্ষেত্রে গুরুত্বপূর্ণ সেগুলো হল,
- হার্ডওয়ার ও সফটওয়ারের সমস্যা নির্ণয় ও পৃথক করা,
- বিভিন্ন নেটওয়ার্ক ও ফরেন হোষ্টের স্ট্যাটাস নির্ণয় করা,
- নেটওয়ার্ক টেস্ট, পরিমাপ ও নিয়ন্ত্রণ করা।
পিং কম্যান্ড ব্যবহারের জন্য যে সিনট্যাক্স ব্যবহার করতে হয় তা হল,
$ping hostnameor ip-address
এই কম্যান্ড প্রতি সেকেন্ডে একটি করে রেসপন্স প্রিন্ট করা শুরু করবে। এটি থামাতে CNTRL + C কী চাপতে হয়।
নেটওয়ার্কে পাওয়া হোষ্টের প্রাপ্যতা জানতে নিচের উদাহরণ সাহায্য করবে,
$ping google.com
PING google.com (74.125.67.100) 56(84) bytes of data.
64 bytes from 74.125.67.100: icmp_seq=1 ttl=54 time=39.4 ms
64 bytes from 74.125.67.100: icmp_seq=2 ttl=54 time=39.9 ms
64 bytes from 74.125.67.100: icmp_seq=3 ttl=54 time=39.3 ms
64 bytes from 74.125.67.100: icmp_seq=4 ttl=54 time=39.1 ms
64 bytes from 74.125.67.100: icmp_seq=5 ttl=54 time=38.8 ms
--- google.com ping statistics ---
22 packets transmitted, 22 received, 0% packet loss, time 21017ms
rtt min/avg/max/mdev = 38.867/39.334/39.900/0.396 ms
$
হোষ্ট পাওয়া না গেলে এটি যে ধরণের ব্যবহার করবে তা হল,
$ping giiiiiigle.com ping: unknown host giiiiigle.com $
এফটিপি ইউটিলিটি
এফটিপি বা ফাইল ট্রান্সফার প্রটোকল এক কম্পিউটার থেকে অন্য কম্পিউটারে ফাইল আপলোড বা ডাউনলোড করতে সাহায্য করে।
এফটিপির নিজস্ব ইউনিক্স টাইপ কম্যান্ড আছে যা আমাদেরকে নিচের কাজগুলো করতে সাহায্য করে।
- রিমোট হোষ্টে সংযুক্ত থাকা ও লগইন করা,
- ডিরেক্টরি নেভিগেট করা,
- ডিরেক্টরি কন্টেন্ট তালিকাবদ্ধ করা,
- ফাইল রাখা ও পাওয়া,
- ascii, ebcdic বা binary ফাইল ট্রান্সফার করা।
পিং কম্যান্ড ব্যবহারের সিনট্যাক্স হল,
$ftp hostnameor ip-address
প্রয়োজনীয় কম্যান্ডের কয়েকটি নিচে লিপিবদ্ধ হল।
কম্যান্ড | বর্ণনা |
put filename | লোকাল মেশিন থেকে রিমোট মেশিনে ফাইলনেম আপলোড করা |
get filename | রিমোট মেশিন থেকে লোকাল মেশিনে ফাইলনেম ডাউনলোড করা |
mput file list | লোকাল মেশিন থেকে রিমোট মেশিনে একাধিক ফাইল আপলোড করা |
mget file list | রিমোট মেশিন থেকে লোকাল মেশিনে একাধিক ফাইল ডাউনলোড করা |
prompt off | প্রম্পট বন্ধ করা |
prompt on | প্রম্পট চালু করা |
dir | রিমোট মেশিনের কারেন্ট ডিরেক্টরিতে থাকা সব ফাইল তালিকাবদ্ধ করা |
cd dirname | ডিরেক্টরিকে রিমোট মেশিনের dirname তে পরিণত করা |
lcd dirname | ডিরেক্টরিকে লোকাল মেশিনের dirname তে পরিণত করা |
quit | কারেন্ট লগইন থেকে লগআউট করা |
কিছু কম্যান্ডের উদাহরণ নিচে দেয়া হল,
$ftp amrood.com Connected to amrood.com. 220 amrood.com FTP server (Ver 4.9 Thu Sep 2 20:35:07 CDT 2009) Name (amrood.com:amrood): amrood 331 Password required for amrood. Password: 230 User amrood logged in. ftp> dir 200 PORT command successful. 150 Opening data connection for /bin/ls. total 1464 drwxr-sr-x 3 amrood group 1024 Mar 11 20:04 Mail drwxr-sr-x 2 amrood group 1536 Mar 3 18:07 Misc drwxr-sr-x 5 amrood group 512 Dec 7 10:59 OldStuff drwxr-sr-x 2 amrood group 1024 Mar 11 15:24 bin drwxr-sr-x 5 amrood group 3072 Mar 13 16:10 mpl -rw-r--r-- 1 amrood group 209671 Mar 15 10:57 myfile.out drwxr-sr-x 3 amrood group 512 Jan 5 13:32 public drwxr-sr-x 3 amrood group 512 Feb 10 10:17 pvm3 226 Transfer complete. ftp> cd mpl 250 CWD command successful. ftp> dir 200 PORT command successful. 150 Opening data connection for /bin/ls. total 7320 -rw-r--r-- 1 amrood group 1630 Aug 8 1994 dboard.f -rw-r----- 1 amrood group 4340 Jul 17 1994 vttest.c -rwxr-xr-x 1 amrood group 525574 Feb 15 11:52 wave_shift -rw-r--r-- 1 amrood group 1648 Aug 5 1994 wide.list -rwxr-xr-x 1 amrood group 4019 Feb 14 16:26 fix.c 226 Transfer complete. ftp> get wave_shift 200 PORT command successful. 150 Opening data connection for wave_shift (525574 bytes). 226 Transfer complete. 528454 bytes received in 1.296 seconds (398.1 Kbytes/s) ftp> quit 221 Goodbye. $
টেলনেট ইউটিলিটি
টেলনেট একধরনের ইউটিলিটি যা এক প্রান্তের ব্যবহারকারীকে নেটওয়ার্কের অন্য প্রান্তের কম্পিউটারের সাথে যোগাযোগ স্থাপন, লগইন ও তাতে কাজ সম্পাদনের সুযোগ দেয়। টেলনেটের মাধ্যমে লগইন অবস্থায় রিমোটলি কানেক্টেড মেশিনের মাধ্যমে যেকোনো কাজ করা সম্ভব। টেলনেট সেশনের উদাহরণ,
C:>telnet amrood.com Trying... Connected to amrood.com. Escape character is '^]'. login: amrood amrood's Password: ***************************************************** * * * * * WELCOME TO AMROOD.COM * * * * * ***************************************************** Last unsuccessful login: Fri Mar 3 12:01:09 IST 2009 Last login: Wed Mar 8 18:33:27 IST 2009 on pts/10 { do your work } $ logout Connection closed. C:>
ফিঙ্গার ইউটিলিটি
ফিঙ্গার কম্যান্ড প্রদত্ত হোষ্টে ব্যবহারকারীর তথ্য প্রদর্শন করে। ফিঙ্গার কম্যান্ডের সিনট্যাক্স এরকম,
লোকাল মেশিনে লগইনকৃত সব ব্যবহারকারীদের ক্ষেত্রে,
$ finger Login Name Tty Idle Login Time Office amrood pts/0 Jun 25 08:03 (62.61.164.115)
লোকাল মেশিনের নির্দিষ্ট কোনও ব্যবহারকারীর ক্ষেত্রে
$ finger amrood Login: amrood Name: (null) Directory: /home/amrood Shell: /bin/bash On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115 No mail. No Plan.
রিমোট মেশিনে লগইনকৃত সব ব্যবহারকারীদের ক্ষেত্রে,
$ finger @avtar.com Login Name Tty Idle Login Time Office amrood pts/0 Jun 25 08:03 (62.61.164.115)
রিমোট মেশিনের নির্দিষ্ট কোনও ব্যবহারকারীর ক্ষেত্রে,
$ finger amrood@avtar.com Login: amrood Name: (null) Directory: /home/amrood Shell: /bin/bash On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115 No mail. No Plan.
ইউনিক্স বেসিক ইউটিলিটিঃ প্রিন্টিং, ইমেইল (Unix Basic Utility, Printing, Email)
রিদওয়ান বিন শামীম
ইউনিক্স অপারেটিং সিস্টেম ও এর বেসিক কম্যান্ড সম্পর্কে আপনাদের নিশ্চয়ই কিছু ধারণা হয়েছে, এই টিউটোরিয়ালে এর এমন কিছু বেসিক ইউটিলিটি নিয়ে কাজ করা হবে যা আমাদের দৈনন্দিন জীবনে অনেক কাজে লাগে।
ফাইল প্রিন্ট করা
ইউনিক্স সিস্টেমে ফাইল প্রিন্ট করার আগে আমরা মার্জিন, কোনও লাইন হাইলাইট করার থাকলে তা করা ইত্যাদি সমন্বয় করে রিফর্ম করে নিব। বেশিরভাগ ফাইল কোনও রিফরমিং ছাড়াই প্রিন্টআউট করা সম্ভব তবে তা দেখতে অতটা সুন্দর নাও হতে পারে।
ইউনিক্সের অনেক ভার্সন nroff এবং troff দুটি শক্তিশালী টেক্সট ফরম্যাটার ব্যবহার করতে দেয়, আমরা এখানে এগুলো সম্পর্কে আলোচনা না করলেও ইন্টারনেটে এদের নিয়ে অনেক টিউটোরিয়াল পাওয়া যায়, সেগুলো অনেক হেল্পফুলএসব ইউটিলিটির জন্য।
pr কম্যান্ড
pr কম্যান্ড টার্মিনাল স্ক্রিন বা প্রিন্টারের জন্য ছোটখাটো ফরম্যাটিং করে থাকে, যেমন যদি কোনও ফাইলে নামের লম্বা লিস্ট থেকে থাকে তাহলে আমরা স্ক্রিনে সেগুলোকে দুই বা ততোধিক কলামে ভাগ করে দিতে পারি।
pr কম্যান্ডের সিনট্যাক্স নিচে দেয়া হল,
pr option(s) filename(s)
pr কম্যান্ড স্ক্রিনে বা প্রিন্টেড কপিতে পরিবর্তন ও ফরম্যাটিং করে থাকে, এটি মূল ফাইলে কোনও পরিবর্তন সাধন করে না।
কিছু pr কম্যান্ড অপশন নিচের ছকে দেখানো হল।
অপশন | বর্ণনা |
-k | আউটপুটে k কলাম গঠন করে |
-d | আউটপুটে ডবল স্পেস(সবpr ভার্সনে নয়) |
-h "header" | পরবর্তী আইটেমকে রিপোর্টার হিডার হিসেবে নেয় |
-t | টপ ও বটম মার্জিন ও হিডার বাদ দেয় |
-l PAGE_LENGTH | পেজলেন্থ নির্ধারণ করে PAGE_LENGTH (66) lines. টেক্সটের ডিফল্ট লাইন নাম্বার ৫৬ |
-o MARGIN | মার্জিন স্পেস দ্বারা প্রতি লাইনকে অফসেট করানো। |
-w PAGE_WIDTH | পেজের উইডথ নির্ধারণ করে PAGE_WIDTH (72) characters মাল্টিপল টেক্সট কলাম আউটপুটের জন্য |
উদাহরণস্বরূপ, food নামের একটি স্যাম্পল ফাইলের জন্য,
$cat food Sweet Tooth Bangkok Wok Mandalay Afghani Cuisine Isle of Java Big Apple Deli Sushi and Sashimi Tio Pepe's Peppers ........ $
Restaurants হিডারে pr কম্যান্ড ব্যবহার করে দুই কলামে রিপোর্ট লিখলে,
$pr -2 -h "Restaurants" food Nov 7 9:58 1997 Restaurants Page 1 Sweet Tooth Isle of Java Bangkok Wok Big Apple Deli Mandalay Sushi and Sashimi Afghani Cuisine Tio Pepe's Peppers ........ $
lp বা lpr কমান্ড
lp বা lpr কমান্ড কোনও ফাইল স্ক্রিনের পরিবর্তে কাগজে প্রিন্টের জন্য ব্যবহৃত হয়। ডিফল্ট প্রিন্টারে কোনও নির্দিষ্ট ফাইল প্রিন্ট করার জন্য lp বা lpr কমান্ড ব্যবহার করতে হয় যেমন food নামের স্যাম্পল ফাইলের জন্য
$lp food
request id is laserp-525 (1 file)
$
lpstat ও lpq কম্যান্ড
lpstat কম্যান্ড নির্দেশ করে প্রিন্টারে কোন কোন ডাটা সারিবদ্ধ আছে যেমন রিকুয়েস্ট আইডি, ওউনার, ফাইল সাইজ এসব। নিজের আউটপুট রিকোয়েস্ট ছাড়া অন্য সব রিকোয়েস্ট দেখতে lpstat –o কম্যান্ড ব্যবহার করা যায়।
$lpstat -o
laserp-573 john 128865 Nov 7 11:27 on laserp
laserp-574 grace 82744 Nov 7 11:28
laserp-575 john 23347 Nov 7 11:35
$
lpq, lpstat –o থেকে একটু ভিন্ন ধরণের তথ্য দেয়,
$lpq laserp is ready and printing Rank Owner Job Files Total Size active john 573 report.ps 128865 bytes 1st grace 574 ch03.ps ch04.ps 82744 bytes 2nd john 575 standard input 23347 bytes $
এখানে প্রথম লাইন প্রিন্টার স্ট্যাটাস বুঝায়, প্রিন্টার অকেজো বা কাগজ না থাকলে প্রথম লাইনে অন্য ম্যাসেজ আসবে।
cancel ও lprm কম্যান্ড
cancel কম্যান্ড lp কম্যান্ড থেকে প্রিন্টিং রিকোয়েস্ট বাদ দেয়, lprm lpr রিকোয়েস্ট বাদ দেয়।
$cancel laserp-575 request "laserp-575" cancelled $
প্রিন্ট হচ্ছে এমন রিকোয়েস্ট বাতিল করতে শুধু নিচের কোড প্রবেশ করাতে হবে,
$cancel laserp request "laserp-573" cancelled $
Lprm কম্যান্ড চলমান রিকোয়েস্ট বাতিলের জন্য প্রয়োগ করা হয়,
$lprm 575 dfA575diamond dequeued cfA575diamond dequeued $
ইমেইল প্রেরণ
ইমেইল প্রেরণের সিনট্যাক্স হল,
$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr
মেইল কম্যান্ডের গুরুত্বপূর্ণ অপশনগুলো হল,
অপশন | বর্ণনা |
-s | কম্যান্ড লাইনে বিষয় নির্ধারণ |
-c | ইউজার লিস্ট কার্বন কপি করা। কমা দ্বারা আলাদা করা তালিকা হতে হবে |
-b | লিস্টে ব্লাইন্ড কার্বন কপি প্রেরণ করা। কমা দ্বারা আলাদা করা তালিকা হতে হবে |
যেমন, admin@yahoo.com তে টেস্ট ম্যাসেজ পাঠাতে কোড,
$mail -s "Test Message" admin@yahoo.com
লাইনের শুরুতে "control-D" ব্যবহার করে ম্যাসেজ লিখতে হবে, এটি বন্ধ করতে শুধু dot (.) নিচের মত করে লিখতে হবে,
Hi,
This is a test . Cc:
নিচের কোড ব্যবহার করে সম্পূর্ণ ফাইল প্রেরণ করা যায়,
$mail -s "Report 05/06/07" admin@yahoo.com < demo.txt
ইনকামিং মেইল চেক করতে ইউনিক্স সিস্টেমে নিচের কোড ব্যবহার করতে হয়,
$mail no email