منبع اصلی نوشتار زیر در این لینک قرار دارد

گیک بازی سر تبریک سال نو :)

سلام

نمی‌دونم بشه بهش گفت گیک بازی یا باید اسمش رو بزاریم تنبلی :D ولی این تبریک گفتن سال نو با پیامک هم یه جوری دردسرهای خاص خودش رو داره. البته خدا رو شکر گوشیمون از این به اصطلاح هوشمندهای بی‌عقل نیست و می‌تونستم یه پیام رو نوشته و فرستنده‌هاش رو مشخص کنم ولی گفتیم یه کاری هم آخر/اوّل سالی کرده باشیم واسه همین خواستم این روال رو اتوماتیک کنم. ابزار‌های خوبی برای این کار داریم یه گجت که یه نسخه از گنو/لینوکس رو اجرا می‌کنه یه خورده وقت و یه برنامه برای ارسال پیامک/sms از ترمینال به اسم smssend .

با یه نگاه به نحوه‌ی استفاده از smssend خیلی راحت میشه یه طرح راحت و خوب میشه برای اجرایی کردن کارمون پیدا کرد:

smssend [options] -n +39xxxxxx:+39xxxxxx -m \"Text\"

 خب پیغام مورد نظر با آپشن m میزاریم لای دوتا کوتیشن. و کافیه شماره‌ی دریافت کننده رو یکی یکی بزار جلوی آپشن n. راه‌های زیادی برای این قسمت وارد کردن شماره میشه پیدا کرد ولی به نظرم راحتترینش این هست که شماره‌ها رو بزاریم توی یه فایل و یکی یکی با حلقه‌ی for دستور رو برای اون اجرا کنیم اسکریپت خیلی راحت و سر راسته:

#!/bin/bash

for num in `cat nums.txt`
{
    smssend -n `echo $num` -m \"`cat sms.txt`\"
}

من خواستم پیغام رو هم توی یه فایل ذخیره کنم و از اون تو فراخوانیش کنم. :) (قرتی بازی که شاخ و دم نداره :)) )

فایل nums.txt یه فایل متنی هست که هر خطش یه شماره هست که ساختنش یه خورده سخته ولی  ارزش ساختنش رو داره به نظرم. امّا اگه خیلی خوشتون نمیاد که همچین فایلی داشته باشید و دوست دارین که اسم و شماره با هم باشه تا بتونید راحت کم و زیاد کنید می‌تونید این کار رو بکنید، اوّل اسم و با یک فاصله شماره رو بنویسیم. یعنی اینطوری:

FirstName LastName Number
FirstName Number
NickName Number

خب دقت کنید که من بین اسم‌ها هم فاصله گذاشتم، یعنی هیچ ضرورتی نداره که حتما اوّل اسم بعداً شماره باشه بلکه ضرورت اینه که:

  1. فیلد آخر شماره باشه.
  2. فیلد‌ها با خط فاصله از هم جدا شن.

در این صورت من فقط برای قسمت cat خروجی رو از یه فیــــلتر awk رد می‌کنم تا فیلد آخر که شماره باشه به دستور وارد بشه. یعنی اسکریپت می‌شه این:

#!/bin/bash

for num in `cat nums.txt | awk \'{print $NF}\'`
{
    smssend -n `echo $num` -m \"`cat sms.txt`\"
}

خیلی شیک و مجلسی :D

دلم می‌خواست با پایتون بنویسم کدش رو ولی وقت کافی برای سر و کله زدن باهاش رو نداشتم واسه همین با بش سر و تهش رو هم آوردم. :D البته بعداً شاید اجراییش کردم با پایتون ;)

سال خیلی خوبی برای همه آرزو میکنم :)



برچسب ها : , , , , , , , ,

به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد