การส่งไฟล์แบบ Top Secret!

ปิด Google Sheets : GASWS1 เมนู Tools > Script Editor… เมนู File > New > Script File ตั้งชื่อ: myscript6 สร้าง function MailMerge4() ตามนี้ function MailMerge4() { var ss = SpreadsheetApp.getActiveSpreadsheet(), SalarySheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName(“Salary”)), TemplateID=’1bjpQnJikYMGYNaJQhetpZpkHyjI7iqBqDufprzMSo4k’, header = “A1:G1″, data=”A2:G6”, dataRows = SalarySheet.getRange(data).getValues(), headerRow = SalarySheet.getRange(header).getValues(), numColumns = SalarySheet.getRange(header).getNumColumns(), emailaddress= “”, subject = “”, docUrl = “”; for (var i=0 ; i < dataRows.length ; i++) { emailText=””; subject = “[ลับ] กองคลัง : แจ้งการโอนเงินให้คุณ ” + dataRows[i][0] + ” ” + dataRows[i][1]; var id =DriveApp.getFileById(TemplateID).makeCopy(subject).getId(), doc=DocumentApp.openById(id), docBody=doc.getBody(); for (var j = 0 ; j < numColumns -1 ; j++) { docBody.replaceText(‘{‘ + headerRow[0][j] + ‘}’ , dataRows[i][j]); } emailaddress=dataRows[i][2]; doc.addViewer( emailaddress); docUrl=doc.getUrl(); doc.saveAndClose(); var attachment = DocumentApp.openById(id); MailApp.sendEmail( emailaddress, subject , “เปิดอ่านเอกสารลับได้ที่ \n” + docUrl ); try { dataRows[i][numColumns-1] = new Date(); } catch (e) { dataRows[i][numColumns-1] = e.message; } } SalarySheet.getRange(data).setValues(dataRows); } เมนู File > Save หรือ กดปุ่ม Ctrl+s เมนู Run > MailMerge4 สร้าง function MailMerge5() ตามนี้ function MailMerge5() { var ss = SpreadsheetApp.getActiveSpreadsheet(), SalarySheet=SpreadsheetApp.setActiveSheet(ss.getSheetByName(“Salary”)), TemplateID=’1WzzAwF5cDtQD0kcrLKRdP0ZO6-6MCqc_VXRUxzgq_gI’, header = “A1:H1″, data=”A2:H6”, dataRows = SalarySheet.getRange(data).getValues(), headerRow = SalarySheet.getRange(header).getValues(), numColumns = SalarySheet.getRange(header).getNumColumns(), emailaddress= “”, subject = “”, docUrl = “”; for (var i=0 ; i < dataRows.length ; i++) { emailText=””; subject = “[ลับสุดยอดดดดด] กองคลัง :

Read More »

วิธีกู้ไฟล์ที่ถูก Ransomware จับไปเรียกค่าไถ่

Ransomware หรือ โปรแกรมเรียกค่าไถ่ไฟล์ต่างๆ โดยการเข้ารหัสไฟล์เหล่านั้น ทำให้ไม่สามารถเปิดใช้งานได้อีก นอกจากจะยอมเสียค่าไถ่ให้กับผู้ร้ายด้วยเงินสกุล Bitcoin โปรแกรมเหล่านี้จะมาจากการติดตั้ง หรือถูกหลอกให้ติดตั้ง ผ่านทางเว็บไซต์ “อโคจร” ต่างๆ Software เถื่อน ละเมิดลิขสิทธิ์ทั้งหลาย และที่มีบ่อยมากคือ มาจาก “จดหมายหลอกลวง (Phishing)” ซึ่งทำให้ติดเชื้อได้อย่างง่ายดาย ข้อมูลเพิ่มเติม https://www.thaicert.or.th/alerts/user/2015/al2015us001.html เมื่อติด หรือ โดนเรียกค่าไถ่ เรียกได้ว่า ยากมากหรือแทบเป็นไปไม่ได้ที่จะกู้คืนโดยการ Decrypt  หรือถอดรหัสกลับคืน มีวิธีการเดียวที่ทำได้เลยคือ “กู้คืนจากไฟล์สำรองไว้” บนระบบปฏิบัติการ Microsoft Windows เอง ก็สามารถทำได้ โดยผู้ใช้จะต้อง “ตั้งค่าการสำรองข้อมูล” ไว้ก่อน จึงจะสามารถกู้คืนได้ แต่หากเครื่องคอมพิวเตอร์เครื่องนั้นเสียหาย ก็จะไม่สามารถกู้คืนได้อีกเลย แต่ยังมีวิธีการ “สำรองและกู้คืน” ที่ง่าย ปลอดภัย และแม้ว่าเครื่องคอมพิวเตอร์จะเสียหายอย่างไร ก็จะสามารถ “กู้คืนข้อมูลได้” นั่นคือการใช้งาน Google Drive ในการสำรองข้อมูล โดยผู้ที่มี Google Account หรือ Gmail สามารถใช้งานได้ทันที โดยมีพื้นที่ให้ 15 GB (รวมกับการเก็บ email) ส่วนผู้ใช้ในมหาวิทยาลัยสงขลานคริทนร์ จะได้ใช้ Google Apps for Education ซึ่งมีพื้นที่ในการจัดเก็บ “Unlimited” หรือไม่มีขีดจำกัดเลยทีเดียว (เบื้องต้นจะเห็นพื้นที่จัดเก็บ 10 TB — 10,000 GB) Google Drive เป็นพื้นที่จัดเก็บข้อมูลบนก้อนเมฆ หรือ Cloud Storage ผู้ใช้ของ Google Account สามารถเข้าถึงได้ที่ https://drive.google.com เมื่อทำการลงชื่อเข้าใช้งาน (Sign In)  แล้วก็จะสามารถมองเห็นข้อมูลบนระบบ สามารถสร้าง Folder และ Upload ไฟล์ขึ้นไปเก็บได้ และสามารถเข้าถึงได้จากทั้ง เครื่องคอมพิวเตอร์ และ Smartphone ได้จากทุกแห่งทั่วโลก ดังภาพที่ 1 (โดยต้องมีระบบ Internet เข้าถึงนะ)   ภาพที่ 1: Google Drive บนระบบ Google Apps for Education ของมหาวิทยาลัยสงขลานครินทร์ ในที่นี้ จะแสดงวิธีการ สร้างโฟล์เดอร์ชื่อว่า “เอกสารสำคัญ” ไว้บน Google Drive เพื่อใช้ในการสำรองไฟล์สำคัญไว้ ขั้นตอนคือ คลิกที่ New > Folder แล้วตั้งชื่อว่า “เอกสารสำคัญ” แล้วคลิกปุ่ม Create ดังภาพที่ 2 ภาพที่ 2: สร้างโฟล์เดอร์ชื่อว่า “เอกสารสำคัญ” ไว้บน Google Drive ส่วนการทำงานเพื่อ Backup ข้อมูลบนเครื่องคอมพิวเตอร์ไปเก็บไว้บนระบบ Google Drive อัตโนมัติ ทำได้โดยติดตั้งโปรแกรม “Google Drive” บนเครื่องคอมพิวเตอร์ แล้วตั้งค่าให้ Sync ข้อมูลกับโฟลเดอร์ “MyGoogleDrive” ใน My Documents ของเครื่องคอมพิวเตอร์ ดังวิธีการต่อไปนี้ Google Drive สามารถดาว์นโหลดได้จาก https://www.google.com/drive/download/ เมื่อติดตั้งเรียบร้อยแล้วให้ลงชื่อเข้าใช้ และคลิก Next ไปเรื่อยๆ ดังภาพที่ 3 ภาพที่ 3: คลิก “ถัดไป” จนถึงหน้าจอสุดท้าย หน้าจอสุดท้าย คลิก “การตั้งค่าขั้นสูง” ดังภาพที่ 4 ภาพที่ 4: คลิก “การตั้งค่าขั้นสูง” คลิก “เปลี่ยน” แล้วสร้าง MyGoogleDrive ไว้ใน My Documents ดังภาพที่ 5 ภาพที่ 5: สร้าง MyGoogleDrive ไว้ใน My Documents ต่อไป เลือก

Read More »

Shell Script : Grouping and Summation

มี Log ขนาดใหญ่ แล้ว ต้องการจะวิเคราะห์ข้อมูลของนาทีที่ผ่านมา เลือกเฉพาะรูปแบบที่ต้องการด้วยคำสั่ง grep ‘Apr 28 10:59’ /var/log/mail.log | grep ‘postfix/qmgr’ |grep ‘nrcpt=’ |grep -v ‘from=<>’ ได้ผลมาประมาณนี้ ต้องการเอาข้อมูล X และ Y จากรูปแบบนี้ from=<X> และ nrcpt=Y ใช้ความรู้จาก Shell Script: Extract exact pattern from string ใช้คำสั่งต่อไปนี้ grep ‘Apr 28 10:59’ /var/log/mail.log | grep ‘postfix/qmgr’ |grep ‘nrcpt=’ |grep -v ‘from=<>’|sed -n ‘s/.*\sfrom=<\(.*\)>.*\snrcpt=\(.*\)\s(.*/\1:\2/p’ ได้ผลมาประมาณนี้ ต้องการจับกลุ่มตาม คอลัมน์ที่ 1 แล้วหาผลรวมของคอลัมน์ที่ 2 ในแต่ละกลุ่ม ใช้คำสั่ง grep ‘Apr 28 10:59’ /var/log/mail.log | grep ‘postfix/qmgr’ |grep ‘nrcpt=’ |grep -v ‘from=<>’|sed -n ‘s/.*\sfrom=<\(.*\)>.*\snrcpt=\(.*\)\s(.*/\1:\2/p’ | awk ‘BEGIN{FS=OFS=”:”}{a[$1]+=$2}END{ for (i in a) print i,a[i]}’ ได้ผลดังนี้ Reference: http://unix.stackexchange.com/questions/169215/group-by-and-sum-in-shell-script-without-awk

Read More »

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 »

วิธีใช้ Google Sheets เปลี่ยนแปลงข้อมูลผู้ใช้จำนวนมากบน GAFE

[บทความนี้ สำหรับผู้ที่มี Admin Privilege ขึ้นไป] วิธีใช้ Google Sheets สร้าง Account ใหม่ลงใน Sub Organization ของ GAFE เมื่อต้องการแก้ไขข้อมูลของผู้ใช้จำนวนมาก ได้แก่ ตั้งรหัสผ่านใหม่ ไม่บังคับให้เปลี่ยนรหัสผ่านในครั้งแรกที่เข้าระบบ ย้าย Organization Unit ไปอยู่ภายใต้ /Students ใน Admin Console ของ Google Apps จะมีเครื่องมือ Users เพื่อใช้ในการจัดการผู้ใช้ แต่เครื่องมือที่มีอยู่ มีข้อจำกัด คือ ไม่สามารถเขียนเงื่อนไขในการกรองเอาเฉพาะ Email Address ของผู้ใช้ที่ต้องการได้ ดังนั้นจึงต้องใช้วิธีการ Download Users ทั้งหมดออกมาก่อน เลือก Download all users … แล้วกดปุ่ม OK จะได้ไฟล์ UserData-psu.ac.th-20141110.csv (ชื่ออาจจะแตกต่างกันไปในแต่ละโดเมน) ให้ Save ไว้ในเครื่องคอมพิวเตอร์ก่อน แล้ว Upload ไปเก็บไว้บน Google Drive แล้วเปิดด้วย Google Sheets จากนั้นเลือกคอลัมน์ A แล้วคลิกขวาเลือก Copy ไปใส่ใน Google Sheets ใหม่ ใน Google Sheets ใหม่ ให้ Edit > Paste ข้อมูลมาลงไว้ในคอลัมน์ A เช่นกัน จากนั้นในคอลัมน์ B2 ใส่สูตรว่า (นักศึกษาของมหาวิทยาลัยจะใช้ Login เป็นรหัสนักศึกษาซึ่งเป็นตัวเลขทั้งหมด จำนวน 7 หรือ 10 หลัก ตามด้วย @psu.ac.th) ดังนี้ ) จากนั้นให้ Copy สูตรดังกล่าวไปในคอลัมน์ B ทั้งหมด จะทำให้ ชื่อบัญชีของนักศึกษาเท่านั้นที่จะมีค่าเป็น Y ส่วนบุคลากรจะมีค่าเป็น N หลังจากนั้นให้ Filter โดยเลือกเฉพาะคอลัมน์ B ที่มีค่าเป็น Y ก็จะได้นักศึกษาทั้งหมด  แล้วทำการเลือกข้อมูลที่ได้ Copy เอาไว้แล้วสร้าง Google Sheets ใหม่อีกอันหนึ่ง ตั้งชื่อว่า Udate Users แล้วเอาข้อมูลดังกล่าวมาใส่ในคอลัมน์ A จากนั้นสร้าง B เป็น Organization Unit Path ที่ต้องการ แล้วสร้าง C เป็น Password ที่ต้องการตั้ง และ D เป็น Status ต่อไป เป็นขั้นตอนการเขียน Google Apps Script สร้าง Google Apps Scripts ใน Google Sheets นี้ ด้วยเมนู Tools > Script Editor … จากนั้นเลือก Blank Project แล้วกดปุ่ม Close ตั้งชื่อโปรเจค UpdateUser แล้วใส่โค๊ดดังนี้ (ปรับค่า firstRow และ lastRow ให้เหมาะสมตามต้องการ) ถ้าลอง Run เลย จะเจอ Error อย่างนี้ คลิก Continue -> Accept -> Dismiss เพราะยังไม่ได้ Enable API ไว้ เนื่องจากการสร้าง Account ต้องใช้สิทธิ์ของ Admin ขึ้นไป และต้องใช้ Admin SDK Directory

Read More »