Shell Script : Extract exact pattern from string

มี string ดังนี้ ในตัวแปร line line=’Apr 18 06:04:57 webmail squirrelmail: Message sent via webmail: by username.s (psu.ac.th) at 41.203.69.5 on 04/17/2015 23:04:57: Message-ID: 98f9739438686e127bcb8547fea7ed82.squirrel@webmail.psu.ac.th Total 9 recipients Message-ID: 98f9739438686e127bcb8547fea7ed82.squirrel@webmail.psu.ac.th’ ต้องการค่าที่อยู่ระหว่าง Total … recipients ใช้คำสั่งนี้ total=$(echo $line | sed -n ‘s/.*Total \([[:digit:]]*\) recipients.*/\1/p’) ตัวแปร $total จะมีค่า 9 ตามที่ต้องการ อธิบาย คำสั่ง sed -n ‘s/PATTERN/&/p’ จะแสดงข้อความที่ตรงกับ Pattern เท่านั้น ไม่แสดงข้อความอย่างอื่่น Reference: http://www.grymoire.com/Unix/Sed.html#uh-15

Read More »

เทคนิคการเพิ่ม user ในระบบ linux คราวละมากๆ

มีผู้สนใจ linux ได้สอบถามเข้ามาทางอีเมลว่า จะเพิ่ม user ในระบบ linux คราวละมากๆ พอจะมี shell scripts ให้นำไปใช้งานหรือเปล่า ผมก็มีอยู่แล้ว แต่ก็ปรับแต่งเล็กน้อย shell script นี้มีดังนี้ 1. makeusername.sh เพื่อสร้างไฟล์รายชื่อตามจำนวนที่ต้องการ เลขเริ่มต้น min และสิ้นสุด max 2. bulkuseradd.sh เพื่อเพิ่ม user และ password แบบ random และสร้างไฟล์ .csv เก็บ user:password นำไปพิมพ์แจก user ได้ 3. bulkuserdel.sh เพื่อลบ user ผมเขียนไว้ในเว็บไซต์ opensource.cc.psu.ac.th หัวข้อ เทคนิค+scripts ( http://opensource.cc.psu.ac.th/เทคนิคการเพิ่ม_user_ในระบบ_linux_คราวละมากๆ)

Read More »

Mozilla Thunderbird & Google Calendar

1. ติดตั้ง extension 2 ตัวใน Thunderbird ได้แก่ Lightning และ Provider for Google Calendar ดังรูป 2. รีสตาร์ท Thunderbird จะพบปุ่ม อยู่ทางมุมบนขวา 3. เข้า gmail.psu.ac.th ล็อคอินให้เรียบร้อย คลิก  แล้วเลือก Calendar 4. ที่หน้า Calendar คลิก เลือก Setting 5. คลิก Calenders ทีี่มุมซ้ายบน 6. เลือกปฏิทินที่ต้องการ 7. ตรวจสอบว่าใช่ปฏิทินที่ต้องการหรือไม่ดูที่ ช่อง Calender Owner ว่าเป็นอันเดียวกับ Username ที่ล็อคอินเข้า gmail 8. เลื่อนดูด้านล่างในส่วนของ Private Address: 9. คลิกขวาที่ ICAL เลือก Copy Link Location 10. กลับมาที่ Thunderbird กดปุ่ม เพื่อเปิดปฏิทิน 11. คลิกขวาที่ช่องว่างฝั่งซ้ายมือใต้คำว่า Calendar เลือก New Calendar 12. ได้หน้าต่าง Create New Calendar เลือก Google Calendar กด Next 13. กด Ctrl-v เพื่อ paste URL ของปฏิทินที่ Copy มาในข้อก่อนหน้า 14. กด back 1 ครั้งแล้วกด Next ใหม่ (อันนี้น่าจะเป็นบักของ Ubuntu 14.10) 15. กด Next 16. จะมีหน้าต่างเพื่อยืนยันตัวตนของ Google ปรากฎขึ้นมา 17.  กด Sign in จะได้อีกหน้าต่างดังรูป กดยอมรับ 18. จะมีหน้าให้เลือกปฏิทินที่ต้องการอีกครั้งกด Next 19. จะมีหน้าให้ ยืนยันตัวตน และหน้าเพื่อขอสิทธิ์การเข้าถึง อีกรอบกดให้ Sign in และยอมรับ 20. กด Finish 21. ก็จะได้ปฏิทินเพิ่มมาตามต้องการ 22. ทั้งหมดนี้ทำบน Ubuntu 14.10 บน Windows ก็น่าจะทำเหมือนกัน 23. สามารถเพิ่มลบเหตุการณ์ผ่าน Thunderbird ได้เลยไม่ต้องเข้าเว็บอีก … 24. จากที่ทดสอบหนึ่ง Profile ของ Thunderbird สามารถมี Google Calendar ได้เพียง account เดียว 25. ขอให้สนุกครับ

Read More »

เปลี่ยน Certificate!?

เนื่อง Certificate *.psu.ac.th จาก Comodo เดิมซึ่งกลายเป็น Cert. ที่จัดว่า WEAK แล้ว ทางเจ้าหน้าที่เครือข่ายจึงได้ขอ Cert. ใหม่มา ที่ Strong ขึ้น 🙂 ก็ต้องมานั่งเปลี่ยน Cert. ในเครื่องที่ให้บริการขั้นตอนดังนี้ Download Cert. ใหม่มาซึ่งต้องติดต่อขอไปที่ Net@dmin โดยผ่านช่องทางของ help.psu.ac.th ไฟล์ที่จะโหลดมาใช้งานมีทั้งหมด 3 ไฟล์ได้แก่ STAR_psu_ac_th.ca-bundle, STAR_psu_ac_th.crt และ STAR_psu_ac_th_key.key เมื่อดาวน์โหลดมาเสร็จแล้วให้เอาไปแทนที่เก่าได้เลย ในตัวอย่างนี้จะเก็บไว้ที่ /etc/ssl/private ทีนี้ มาดู config เก่าของ apache2 <IfModule mod_ssl.c> <VirtualHost *:443> ServerName bahamut.psu.ac.th ServerAdmin cc-server-admin@group.psu.ac.th DocumentRoot “/var/www/html” ErrorLog ${APACHE_LOG_DIR}/bahamut.ssl_error_log TransferLog ${APACHE_LOG_DIR}/bahamut.ssl_access_log LogLevel warn SSLEngine on SSLCertificateFile /etc/ssl/private/STAR_psu_ac_th.crt SSLCertificateKeyFile /etc/ssl/private/STAR_psu_ac_th.key SSLCertificateChainFile /etc/ssl/private/STAR_psu_ac_th.ca-bundle RewriteEngine On RewriteRule /avl https://licensing.psu.ac.th <Directory /var/www/licensing> AllowOverride All Order deny,allow Deny from all Allow from 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 </Directory> </VirtualHost> </IfModule> จะเห็นว่าไฟล์ชื่อไม่ตรงอยู่ไฟล์หนึ่งคือ STAR_psu_ac_th.key ก็เปลี่ยนชื่อให้ตรง เป็นอันเสร็จ แต่ … เนื่องจากเป็น Cert. ใหม่ เพื่อเพิ่มความแข็งแรง เจ้าหน้าที่เครือข่ายจึงได้กำหนด Passphrase ไว้ด้วย ต้องแก้ไขแฟ้ม /etc/apache2/mods-enabled/ssl.conf ในบรรทัดที่เขียนว่า SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase ให้แก้ /usr/share/apache2/ask-for-passphrase เป็น /etc/ssl/private/passphrase-script แล้วสร้างแฟ้ม /etc/ssl/private/passphrase-script มีข้อความว่า #!/bin/sh echo “passphrase ที่ได้รับแจ้งจาก Net@dmin” chmod +x /etc/ssl/private/passphrase-script และทดสอบ script ด้วยว่าผลลัพธ์ที่ได้ตรงกับ passphrase ที่ Net@dmin แจ้งมา restart apache2 ด้วยคำสั่ง sudo service apache2 restart ถ้า passphrase ที่ใส่ไว้ในแฟ้ม passphrase-script ถูกต้องจะ restart สำเร็จ เป็นอันเสร็จ สิ่งที่ต้องแก้เพื่อให้ได้ A+ ในการทดสอบกับเว็บ https://www.ssllabs.com/ssltest/analyze.html แก้ไขแฟ้ม /etc/apache2/mods-enabled/ssl.conf โดยแก้ไข/เพิ่ม ข้อความดังต่อไปนี้ SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES: RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS SSLHonorCipherOrder on SSLProtocol all -SSLv3 -SSLv2 SSLCompression off sudo a2enmod headers เพื่อให้ module headers ของ apache2 ทำงาน แก้ไขแฟ้มของไซต์ที่เปิด ssl ไว้ จากตัวอย่างนี้คือ /etc/apache2/sites-enabled/licensing-ssl.conf โดยเพิ่มข้อความว่า Header add Strict-Transport-Security “max-age=15768000;includeSubDomains” ตัวอย่าง <IfModule mod_ssl.c> <VirtualHost *:443> ServerName licensing.psu.ac.th ServerAdmin cc-server-admin@group.psu.ac.th DocumentRoot “/var/www/html/avl” ErrorLog ${APACHE_LOG_DIR}/licensing.ssl_error_log TransferLog ${APACHE_LOG_DIR}/licensing.ssl_access_log LogLevel warn SSLEngine on Header

Read More »

ช่องโหว่ซอฟต์แวร์ Bash Vulnerability วิธีตรวจสอบและแก้ไข

ช่องโหว่อันตรายของซอฟต์แวร์ Bash ————————————————– -การตรวจสอบช่องโหว่ซอฟต์แวร์ Bash Vulnerability ในระบบปฎิบัติการ Unix & Linux ทดสอบโดยพิมพ์คำสั่ง env VAR='() { :;}; echo Bash is vulnerable!’ bash -c “echo Bash Test” หากปรากฎข้อความว่า Bash is vulnerable! แสดงว่าต้องรีบปรับปรุงซอฟต์แวร์ bash ทันที -วิธีการป้องกันและแก้ไขอัปเดตซอฟต์แวร์ bash หากใช้ Ubuntu / Debian ปรับแก้ไขอัปเดตเฉพาะปัญหา bash vulnerability sudo apt-get update && sudo apt-get install –only-upgrade bash ปรับแก้ไขอัปเดตทั้งระบบ sudo apt-get update && apt-get upgrade หากใช้ CentOS / Redhat / Fedora ปรับแก้ไขอัปเดตเฉพาะปัญหา bash vulnerability sudo yum update bash ขอบคุณครับ ^_^

Read More »