লুয়া (Lua) ভাষা তার সহজতা, লাইটওয়েট প্রকৃতি এবং উচ্চ পারফরম্যান্সের জন্য ব্যাপকভাবে অটোমেশন স্ক্রিপ্ট তৈরির জন্য ব্যবহৃত হয়। এটি সিস্টেমের বিভিন্ন কাজ যেমন ফাইল পরিচালনা, ডেটাবেস ম্যানেজমেন্ট, নেটওয়ার্ক অপারেশন, এবং অন্য কাস্টম কার্যকলাপ অটোমেট করতে ব্যবহৃত হতে পারে।
এখানে, আমরা লুয়া ব্যবহার করে কিছু সাধারণ অটোমেশন স্ক্রিপ্ট তৈরির উদাহরণ দেখব। এর মধ্যে ফাইল অপারেশন, টাস্ক সিডিউলিং, নেটওয়ার্ক অপারেশন এবং অন্যান্য অ্যাপ্লিকেশন অটোমেশন অন্তর্ভুক্ত থাকবে।
১. ফাইল ম্যানিপুলেশন অটোমেশন
লুয়া ভাষায় io লাইব্রেরি ব্যবহার করে ফাইল পড়া, লেখা এবং মুছতে সহায়তা করে। এটি সিস্টেম অটোমেশনের জন্য খুবই কার্যকর।
উদাহরণ ১: ফাইল তৈরি এবং লেখা
-- একটি নতুন ফাইল তৈরি এবং তাতে লেখা
local file = io.open("output.txt", "w") -- 'w' মোডে ফাইল ওপেন
if file then
file:write("Hello, Lua Automation!\n")
file:close()
else
print("Unable to open file for writing.")
endএই স্ক্রিপ্টটি একটি নতুন ফাইল "output.txt" তৈরি করবে এবং তাতে "Hello, Lua Automation!" লেখে।
উদাহরণ ২: ফাইল থেকে পড়া
-- একটি ফাইল থেকে ডেটা পড়া
local file = io.open("output.txt", "r") -- 'r' মোডে ফাইল ওপেন
if file then
local content = file:read("*all") -- সমস্ত কনটেন্ট পড়া
print(content)
file:close()
else
print("Unable to open file for reading.")
endএই স্ক্রিপ্টটি "output.txt" ফাইলটি পড়ে তার কনটেন্ট আউটপুট করবে।
২. টাস্ক সিডিউলিং (Task Scheduling)
লুয়া স্ক্রিপ্টগুলি নির্দিষ্ট সময় পর পর চালানোর জন্য সিডিউল করা যায়। সাধারণত os.execute() অথবা socket লাইব্রেরি ব্যবহার করে এটি করা যায়।
উদাহরণ ১: নির্দিষ্ট সময়ে স্ক্রিপ্ট চালানো
-- নির্দিষ্ট সময় পরে কিছু কাজ করা
os.execute("sleep 5") -- 5 সেকেন্ড বিরতি দিয়ে কাজ করবে
print("Task executed after 5 seconds.")এখানে, os.execute("sleep 5") কমান্ডটি ৫ সেকেন্ড স্লিপ করবে এবং পরে স্ক্রিপ্টের পরবর্তী অংশ চালাবে।
৩. নেটওয়ার্ক অটোমেশন
লুয়া এর socket লাইব্রেরি ব্যবহার করে নেটওয়ার্ক রিকোয়েস্ট পাঠানো এবং সার্ভারের সাথে যোগাযোগ করা যায়।
উদাহরণ ১: HTTP রিকোয়েস্ট পাঠানো
local http = require("socket.http")
local response, status = http.request("http://www.example.com")
if status == 200 then
print("Request successful!")
print(response) -- সার্ভার থেকে প্রাপ্ত রেসপন্স প্রিন্ট করা
else
print("Request failed with status: " .. status)
endএখানে, socket.http ব্যবহার করে একটি HTTP GET রিকোয়েস্ট পাঠানো হচ্ছে এবং তার রেসপন্স প্রিন্ট করা হচ্ছে।
উদাহরণ ২: TCP সোকেট দিয়ে সার্ভার তৈরি
local socket = require("socket")
local server = socket.bind("*", 12345) -- 12345 পোর্টে সার্ভার লিসেন করা
print("Server is listening on port 12345")
while true do
local client = server:accept() -- নতুন ক্লায়েন্ট আসলে অ্যাকসেপ্ট করা
client:send("Hello, client!\n")
client:close()
endএখানে একটি TCP সোকেট সার্ভার তৈরি করা হচ্ছে যা 12345 পোর্টে ক্লায়েন্টদের কানেকশন গ্রহণ করবে এবং "Hello, client!" মেসেজ পাঠাবে।
৪. ডেটাবেস অটোমেশন
লুয়া ডেটাবেস অটোমেশনেও ব্যবহৃত হতে পারে। সাধারণত luasql বা sqlite3 লাইব্রেরি ব্যবহার করে ডেটাবেস সংযোগ করা এবং SQL কোয়েরি চালানো হয়।
উদাহরণ ১: SQLite ডেটাবেসে কনেক্ট এবং ডেটা ইনসার্ট
local sqlite3 = require("sqlite3")
local db = sqlite3.open("test.db")
-- একটি টেবিল তৈরি করা
db:exec[[
CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT);
]]
-- ডেটা ইনসার্ট করা
local stmt = db:prepare("INSERT INTO users (name) VALUES (?)")
stmt:bind_values("John Doe")
stmt:step()
print("Data inserted into the database.")
db:close()এখানে, SQLite ডেটাবেস ব্যবহার করে একটি টেবিল তৈরি করা হয়েছে এবং ডেটা ইনসার্ট করা হয়েছে।
৫. ফোল্ডার এবং ফাইল ম্যানিপুলেশন অটোমেশন
ফোল্ডার বা ফাইল পরিচালনা আরও স্বয়ংক্রিয় করতে লুয়া ব্যবহার করা যেতে পারে।
উদাহরণ: একটি ডিরেক্টরি থেকে ফাইলের নাম সংগ্রহ করা
local lfs = require("lfs") -- LuaFileSystem মডিউল
for file in lfs.dir("./") do -- বর্তমান ডিরেক্টরি থেকে ফাইল নাম পেতে
if file ~= "." and file ~= ".." then
print(file) -- ফাইল নাম প্রিন্ট করা
end
endএখানে, LuaFileSystem (lfs) ব্যবহার করে একটি ডিরেক্টরির মধ্যে থাকা ফাইলের নামগুলি প্রদর্শিত হচ্ছে।
৬. এপিআই অটোমেশন
লুয়া ব্যবহার করে আপনি বিভিন্ন ওয়েব সার্ভিস এবং এপিআইয়ের মাধ্যমে অটোমেশন করতে পারেন। luasocket বা http লাইব্রেরি ব্যবহার করে REST API কল করা সম্ভব।
উদাহরণ: REST API কল করা
local http = require("socket.http")
local ltn12 = require("ltn12")
local response = {}
http.request{
url = "https://jsonplaceholder.typicode.com/posts",
method = "GET",
sink = ltn12.sink.table(response)
}
print(table.concat(response))এখানে, একটি REST API কল করা হয়েছে এবং রেসপন্স প্রিন্ট করা হচ্ছে।
সারসংক্ষেপ
লুয়া (Lua) দিয়ে অটোমেশন স্ক্রিপ্ট তৈরি করা একটি সহজ এবং শক্তিশালী পদ্ধতি। আপনি বিভিন্ন কাজ অটোমেট করতে পারেন যেমন:
- ফাইল ম্যানিপুলেশন: ফাইল তৈরি, লেখা এবং পড়া।
- টাস্ক সিডিউলিং: নির্দিষ্ট সময় পরে কাজ করা।
- নেটওয়ার্ক অটোমেশন: HTTP রিকোয়েস্ট পাঠানো এবং সার্ভার পরিচালনা।
- ডেটাবেস অটোমেশন: ডেটাবেসে ইনসার্ট, আপডেট, এবং কোয়েরি চালানো।
- ফোল্ডার/ফাইল পরিচালনা: ফোল্ডার এবং ফাইলের মধ্যে কাজ করা।
- এপিআই ইন্টিগ্রেশন: ওয়েব সার্ভিস বা REST API এর মাধ্যমে ডেটা এক্সচেঞ্জ।
লুয়া এক্সটেনশন ও লাইব্রেরির মাধ্যমে অটোমেশন আরও শক্তিশালী ও নমনীয় হতে পারে।
Read more