สืบเนื่องจากเนตบ้านพัก จำเป็นจะต้อง login เพื่อเข้าใช้งาน แล้วถ้า login นาน ๆ แล้วไม่ใช้งาน มันก็จะ auto logout แล้วต้อง login ใหม่ ทำให้เกิดความเซ็ง เวลาจะ remote มาทำงานเครื่องที่บ้าน แล้วโดนตัดเนต ไอ้เจ้า NanoStation M5 ก็ไม่มีหน้าจอ Interface ให้กรอก username & password อย่าง WISP mode เสียนี่
มาวันนี้มีเหมือนจะมีเวลาว่างนิดหน่อย (จริง ๆ ไม่ว่าง แต่ฟุ้งซ่านอยู่) ก็เลยไม่ง้อ WISP Mode หาทางทำให้เจ้า M5 มัน autologin เองซะเลย
ถามอากู๋ไปสัก 5 นาที ก็เจอเพจของ WirelessMove มี Script ให้ลองใช้ ก็จัดเลยแล้วกัน
แต่ก่อนอื่นต้องดูก่อนว่าหน้า Login มันอยู่หน้าไหน ด้วย Wireshark ได้ตามภาพ
ก็เป็นอันเสร็จพิธี
แถมท้าย ด้วย script check_autologin.sh สำหรับตรวจสอบว่า มันได้รัน script ให้เราจริงหรือเปล่า script มีดังนี้
มาวันนี้มีเหมือนจะมีเวลาว่างนิดหน่อย (จริง ๆ ไม่ว่าง แต่ฟุ้งซ่านอยู่) ก็เลยไม่ง้อ WISP Mode หาทางทำให้เจ้า M5 มัน autologin เองซะเลย
ถามอากู๋ไปสัก 5 นาที ก็เจอเพจของ WirelessMove มี Script ให้ลองใช้ ก็จัดเลยแล้วกัน
แต่ก่อนอื่นต้องดูก่อนว่าหน้า Login มันอยู่หน้าไหน ด้วย Wireshark ได้ตามภาพ
รู้ URL แล้วก็ ยัดใส่ Script ได้เลย
ป้องกันการ auto logout ด้วยการใส่ Schedule ไว้ใน crontab (ตอนแรกจะเขียน script crond เอง แต่ไม่เคยใช้จริงจัง อ่านแล้วงง หาไปหามาไปเจอว่า M5 มี plugin ให้ใช้แล้ว...............สบายยยยยย
run ตามนี้ เป็นอันจบ ความหมายคือสั่งให้ auto login ทุก ๆ 10 นาที
คำสั่ง crontab ที่ใช้คือ
*/10 * * * * wget --output-document=/dev/null "http://172.168.1.1/CheckValidUser.php?username=phnarong&password=xxxx"
ที่เหลือก็ลอง logout แล้วรอดูว่า 10 นาทีให้หลัง จะเล่นเนตได้โดยที่ไม่ต้อง login หรือเปล่า
โอกาสหน้าอาจให้เช็คก่อนว่ามีการ login อยู่หรือเปล่า ถ้าไม่ได้ login ค่อยทำการ login
-------------------------------------------------------------------------------------------------
กลับมาอย่างรวดเร็ว เพิ่มเติม script สำหรับ check ว่า เครื่องกำลัง login อยู่หรือเปล่า
แนวคิดของ algorithm ก็คือ ส่งคำสั่ง ping ออกไปยัง ip ปลายทางที่อยู่บน internet อาทิ 8.8.8.8 ถ้าเจอข้อความว่า 100% packet loss แสดงว่า ping ไม่เจอ ให้ลอง login ได้
วิธีการก็คือสร้าง script ชื่อ autologin.sh เพื่อทำการใส่เงื่อนไข ก่อนที่จะสั่ง auto login จากนั้นก็แก้ crontab ให้เรียกใช้ script นี้แทนการสั่ง autologin ข้างต้นโดยตรง
รายละเอียด ไฟล์ autologin.sh ก็มีดังนี้
#!/bin/sh
count=$(ping -c5 -w5 8.8.8.8 | grep "100% packet loss" | wc -l)
if [ "$count" -gt 0 ]; then
wget --output-document=/dev/null "http://172.168.1.1/CheckValidUser.php?username=phnarong&password=xxxxx"
echo "autologin start"
fi
จากนั้น ก็แก้ไขไฟล์ crontab ใหม่ ด้วยคำสั่ง
crontab -e
แล้วก็แก้บรรทัด crontab ดังนี้
*/10 * * * * /etc/persistent/etc/crontabs/autologin.sh
*หมายเหตุ อย่าลืมตรวจสอบความถูกต้องของ path ของ autologin.sh ด้วย
อย่าลืม save ด้วยการกดปุ่ม ESC แล้วกดปุ่ม :wq แล้วก็พิมพ์ คำสั่งว่า
save
ก็เป็นอันเสร็จพิธี
แถมท้าย ด้วย script check_autologin.sh สำหรับตรวจสอบว่า มันได้รัน script ให้เราจริงหรือเปล่า script มีดังนี้
#!/bin/sh
START=$(date +%s)
until [ $(ping -c5 -w5 8.8.8.8 | grep "100% packet loss" | wc -l) == 0 ]
do
CURRENT=$(date +%s)
echo current time = $CURRENT
sleep 1
done
STOP=$(date +%s)
echo execution time = $(($STOP-$START)) second(s)
ความคิดเห็น
แสดงความคิดเห็น