นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน
อ่าน: 7500
ความเห็น: 17

ยืนยันตัวตนกับ PSU login โดยการใช้ shell script

ถ้าจะไม่เปิด web browser จะ login กับหน้า web login.psu.ac.th ได้ยังไง?

นับตั้งแต่ ระบบพิสูจน์ตัวจริงผู้ใช้เครือข่ายคอมพิวเตอร์ [1] [2] เริ่มมีการใช้งาน ในเครือข่ายของ PSU สิ่งที่เราเราทุกคน (เอ ... หรือแค่ส่วนใหญ่?) จะต้องทำ ก่อนที่จะ web surf ได้ตามปกติแบบที่ทำกันอยู่ก่อนหน้านี้ ก็คือ ต้องเปิดหน้า web ไปที่ http://login.psu.ac.th ก่อน เพื่อที่จะเริ่ม authentication หรือ ยีนยันตัวตนว่าเราคือใคร ก่อนที่จะสามารถ ออกไปข้างนอกได้

ใน 1-2 วันแรกที่ผมเริ่มใช้งานผมพบว่า URL ที่ผมพิมพ์ลงไป

http://www.google.com

เปลี่ยนไปในลักษณะนี้

https://www.google.com:6080/esp/uid.esp?url=http://www.google.com/&vsys=1

และได้หน้า web page ออกมาประมาณนี้

นั่นทำให้ผมใช้เวลา 2-3 นาที ในการทำความเข้าใจว่าเกิดอะไรขึ้น ... ระบบการยืนยันตัวตน ที่ประกอบไปด้วยองค์ประกอบหลายส่วน ตั้งแต่ firewall, proxy server, authentication server, และ web server ควรจะทำงานร่วมกัน และ redirect web page หน้าแรก ที่ผมยังไม่ได้ login ไปยัง https://login.psu.ac.th ให้ผมกรอก login และ password เพื่อที่จะยืนยันตัว โดยใช้ PSU Passport ก่อน

แต่ผลที่ออกมา ดูเหมือนว่าจะไม่ใช่อย่างนั้น การ redirection ที่เกิดขึ้น ดูเหมือนว่าจะยังไม่สมบูรณ์...

ปัญหาที่มี อาจจะไม่ใช่ ปัญหาระบบของ authentication  system ที่ทางศูนย์คอมพิวเตอร์ setup เอาไว้เอง มันอาจจะเป็นผลมาจาก ตัว web browser ที่ผมเลือกใช้ หรือ อาจจะรวมไปถึง ระบบปฏิบัติการที่ผมใช้อยู่ทีไม่ใช่ระบบที่ ชนส่วนใหญ่เลือกใช้ ก็เลยได้ผลออกมาเป็นอย่างนั้น ... จะอย่างไรก็แล้วแต่

... วันแรกผ่านไปได้ ... ด้วยดี ... แต่วันที่สอง ก็เกิดขึ้นอีก... ก็แหงล่ะซี ผมไม่ได้ เปิดหน้า login ของ login.psu.ac.th ก่อน นี่นา ... ผมไม่ควรที่จะแปลกใจ หลังจากที่ได้เจอ และรู้ขั้นตอนแล้วว่าต้องทำอะไรบ้าง ... แต่ตัวผมเอง ก็ทำให้ตัวเองแปลกใจกับเหตุการณ์ที่เกิดขึ้น ที่ต้องใช้เวลา 2-3 นาที ไม่ต่างจากวันแรก ในการทำความเข้าใจว่าเกิดอะไรขึ้น คนเราควรจะเรียนรู้จากความผิดพลาดที่เพิ่งเกิดขึ้น แต่ทว่า ความจำของคนเราบางครั้งก็ไม่ยาวกว่าความจำของปลาทองเท่าไหร่เลย ...

ในการใช้งานคอมพิวเตอร์ที่ผ่านมา เรื่องของการที่ต้อง login ก่อนที่จะเข้าไปใช้งานระบบได้ น่าจะเป็นเรื่องที่ผมคุ้นเคยดี เพราะต้องเปลี่ยนมาใช้ระบบปฏิบัติการ ที่เป็น Unix ตั้งแต่สมัยแรกๆ ในช่วงของการเปลี่ยนผ่านจาก DOS ไปเป็น Windows และ OS อื่นๆที่ไม่ใช่ DOS

ในขณะที่ Windows สมัยแรกๆ ไม่จำเป็นจะต้อง login ก็สามารถเข้าไปใช้งานได้ ผมต้องเผชิญหน้ากับ Login prompt ของ Ultrix, Minix, Sun OS, และ Linux ตั้งแต่ช่วงแรกๆ ที่เริ่มหัดใช้ และค่อยๆเปลี่ยนความคุ้นเคยจากการใช้ DOS เป็น OS ตัวอื่นแทน ในช่วงสิบกว่าปีที่ผ่านมา ดังนั้น เรื่องของการที่ต้อง login ก่อน ถึงจะใช้ internet ได้ มันไม่ควรที่จะก่อปัญหากับผมขนาดนั้น

มันจะยากเย็นอะไร ขนาดใหนกันเชียว ที่จะเปลี่ยนวิธีการใช้งาน คอมพิวเตอร์ จากเดิมทีที่เปิด web browser ขึ้นมา click แรกที่เลือก แทนที่จะไป gmail หรือ google ก็เปลี่ยนเป็น login.psu.ac.th แทน? หรือให้ง่ายก็ เปลี่ยน home page เป็นหน้า login ของ PSU ซะ

... เอ่อ ... ก็ดูเหมือนว่าจะเป็นอย่างนั้น ถ้าไม่ใช่ว่าเจ้า notebook ที่ผมใช้อยู่นี่ ไม่ใช้งานเฉพาะภายใน PSU Net ถ้ากลับใช้ที่บ้าน หรือ ที่อื่นๆ การที่ set หน้า home page ให้เป็น login.psu.ac.th ก่อน ค่อนข้างที่จะเป็นเรื่องชวน หุดหิดหดหู่หูเหี่ยว อยู่พอสมควร

และอีกอย่างนึง Task Manager ของ google chrome แจ้งว่า แต่ละ page ที่เปิดทิ้งเอาไว้ กิน memory ไปถึง 7-8 MB ซึ่งรวมไปถึงหน้า login ของ PSU ด้วยเช่นเดียวกัน ที่ต้องเปิดทิ้งเอาไว้ เพื่อให้ไม่ต้อง login ใหม่หลังจากเวลาผ่านไปซัก 15 นาที

จำนวน memory ที่ใช้ไปนั่นนะ ไม่เยอะเท่าไหร่หรอก เมื่อเทียบกับ ขนาดของ memory ของเครื่องทั้งหมด ที่นับเป็นหน่วย Gig ซึ่งมากกว่าเป็น 1000 เท่า แต่ทำไมถึงต้อง memory ขนาดนั้น  8MB กับ 1 page ที่มีข้อความไม่เท่าไหร่นี่นะ (ส่วนนี้อาจจะเป็นปัญหาของตัว browser เอง) และเปลือง Tab อีก 1 Tab บนตัว Web browser ซึ่ง เวลาใช้งานจริง ผมก็มี Tab เยอะจนชวนปวดหัวแล้วเหมือนกัน ... มันจำเป็น หรือเปล่า? มีทางเลือกอื่นๆ อีกใหม?

ทำไมไม่เปลี่ยนการ authentication จาก การใช้ web login ให้เป็น script ที่ใช้ login  ผ่านจาก console เสียเลยล่ะ ถ้าจำเป็นและใช้งานได้ ก็ให้ login โดยใช้ผ่าน cron เสียเลย .... นั่นเป็นคำถามที่ผมถามตัวเองตั้งแต่ ช่วงสัปดาห์แรกๆ ที่ต้องใช้ระบบ psu login

ฟังดูอาจจะเป็นเรื่องยุ่งยาก ในการเปลี่ยนระบบของการ authentication ซึ่งเตรียมไว้ให้ใช้ web สำหรับ การ ป้อนข้อมูล แล้ว จะทดแทนโดยการใช้ shell script ... และถ้าจะว่าไป ปัญหาลักษณะนี้ผมเคยแก้มาครั้งหนึ่งแล้วก่อนหน้านี้ ... ขออนุญาต ไม่เอ่ยนามว่าเอาไปใช้ที่ใหน แต่วิธีการที่ใช้ในตอนนั้น ตั้งแต่เริ่มการตรวจสอบว่า การ authentication จะต้อง รับ/ส่ง ข้อมูลอะไรบ้าง มีข้อมูลใดบ้างที่จำเป็นต้องใช้ ส่วนใดที่ไม่จำเป็นส่วนใดที่ต้องเก็บไว้เพื่อตอบกลับ .... เครื่องมือยุคแรก ที่ผมใช้คือ tcpdump ร่วมกับ perl script ที่จะใช้ ดักจับ และ ตัดข้อมูลออกมา และเขียนตัว perl script สำหรับการ authentication ผ่าน web page ซึ่งใช้เวลาอยู่พอสมควร ... เพราะเครื่องมือที่ใช้อยู่ไม่ใช่เครื่องมือที่เหมาะสม.... แต่สำหรับการแก้ปัญหานี้ ง่ายกว่าเยอะมาก

เพราะว่า ผมไม่มีเครื่องมือที่เหมาะสม จนกระทั่งเดือนปลายเดือนมีนาคม  ที่ผ่านมา (26 มีค. 53) ที่ไปประชุม Netadmin ที่ศูนย์คอมพิวเตอร์ ในคาบเรียนของ พี่วิภัทธ เรื่อง bash shell และ expect script  ได้  คุณคณกรณ์ แสดงวิธีการ authentication กับ web application แบบง่ายโดยใช้ shell script ซึ่งเครื่องมือ 2 อย่างคือ livehttpheader และ curl

ซึ่งทำให้งานที่ผมเคยใช้ tcpdump กับ perl script ในการนั่งแกะ ขั้นตอนของการสื่อสารระหว่าง web browser กับ web server ตัว livehttpheader ซึ่งเป็น plugin ของ firefox/iceweasel ทำให้งานนี้ ทำได้ง่ายขึ้นเป็นหลายสิบเท่า ...ยืนยัน.. หลายสิบเท่าจริงๆ... รวมทั้งยังสามารถใช้ได้กับ การสื่อสารผ่าน https protocol ซึ่งผมยังไม่ "สามารถ" ขนาดที่จะใช้ tcpdump มาใช้แกะ packet ได้ ส่วน curl เป็นตัวที่ใช้ในการ รับ/ส่ง packet ของข้อมูลกับ web server โดยสามารถจัดการกับ cookies และ การสื่อสารแบบเข้ารหัสผ่าน https protocol ให้ได้โดยสะดวก

ซึ่งต้องขอขอบคุณ คุณคณกรณ์ ไว้ที่นี้อีกครั้งด้วยครับ สำหรับความรู้ที่ช่วยเอามา share ให้ในวันนั้น

เพื่อให้สามารถ authentication กับหน้า web login ของ PSU ได้ โดยใช้ script ซึ่งสามารถเรียกใช้ได้จาก command line ผมก็ได้ดัดแปลง ตัวอย่าง script ที่มีอยู่ ซึ่งเขียนไว้ตอนไปนั่งเรียนอยู่ในคาบ จากตัวอย่างของคุณคณกรณ์ ได้ออกมาประมาณนี้ครับ

#!/bin/sh

# ---------------------------------------------------------------------    #
# psuautosigned        Signed-in with PSU Login to access internet.    #
# ---------------------------------------------------------------------    #

CONF="$HOME/.psuautosigned"
COOKIES="$HOME/.psuautosigned-cookies.txt"

LOGIN="http://login.psu.ac.th/keepalive.php"
LOGINS="https://login.psu.ac.th:6080"
LOGOUT="http://login.psu.ac.th/cgi-bin/logout-cp.cgi"

SIGNED="${LOGINS}/esp/uid.esp?url=${LOGIN}/&vsys=1"

# How long before we try refresh login page
SLEEPTIME=600
RES="/tmp/.$$.html"

CURL="/usr/bin/curl"
[ ! -x $CURL ] && echo "Can't execute ${CURL}." && exit

# Read USER and PASS from configuration file
readconf() {
    USER=$(grep ^user= $CONF)
    PASS=$(grep ^pwd= $CONF)
    if [ -z "$USER" -o -z "$PASS" ]; then
        [ -z "$USER" ] && echo "Please set username 'user=' in $CONF"
        [ -z "$PASS" ] && echo "Please set password 'pwd=' in $CONF"
        exit
    fi
}

# Get USER and PASS from User
getuserpasswd() {
    # If we are running from terminal?
    [ "$(tty)" = "not a tty" ]        && \
        echo "Not running in terminal."    && \
        exit

    # Yes, we are in the terminal
    stty echo;    echo -n "User: ";    read USER
    stty -echo;    echo -n "Passwd: ";    read PASS; echo ""
    stty echo
    if [ -z "$USER" -o -z "$PASS" ]; then
        [ -z "$USER" ] && echo "User must be defined."
        [ -z "$PASS" ] && echo "Password must be defined."
        exit
    fi
    USER="user=$USER"
    PASS="pwd=$PASS"
}

# Signed-in
do_authen() {
    $CURL -s -S -k -L $LOGIN -c $COOKIES > $RES

    # Did we authenticated?
    if [ -z "$(grep '^Last refreshed' $RES)" ]; then
        # No, try authenticate first
        echo "Try authenticated at $(date)"
        $CURL    -s -S -k -L $SIGNED         \
            -c $COOKIES -b $COOKIES        \
            -d "$U"                \
            --data-urlencode "$P"        \
            -d "$O"                > $RES

        # Is it ok?
        [ -z "$(grep '^Last refreshed' $RES)" ]        && \
        echo "Failed to authenticated at $(date)"    && \
        exit
    fi
	cat $RES					|\
egrep '^Last|Your' |\
sed -e 's/<br>//' \
-e 's/ *Your IP Address is /: /' \
-e 's/ *<\/font>//' |\
tr '\n' ' '
        echo 
    rm -f $RES
}

# Signed-out
do_logout() {
    echo "Request to logout at $(date), please wait ..."
    $CURL -s -S -k -L $LOGOUT -c $COOKIES -b $COOKIES -d "" > $RES
    U=$(cat $RES | grep Login= | sed -e 's/^.*Login=//' -e 's/\r//')
    M=$(cat $RES | grep 'Back to Login' | cut -f3 -d\; | cut -f1 -d\<)
    echo "$U $M"
}

# Get authentication information
getautheninfo() {
    # if config file $CONF exist, read user/password from config file.
    if [ -f "$CONF" ]; then
        readconf
    else    # Then ask user to provide them.
        getuserpasswd
    fi

## The usual AUTHSTRING="${USER}&${PASS}&ok=Login"
## Separate AUTHSTRING to 'user=xxx' 'pwd=xxx' and 'ok=Login'

    O="ok=Login"
    U="$USER"
    P="$PASS"
}

### Main Start Here ###

action="$1"
# Set default action if argument is not provided.
[ "$action" = "" ] && action="login"

# Default usage it loop until the terminal is closed or the
# ^C is given.

case "$action" in
login)
    getautheninfo
    echo "-------------------------------------------"
    echo "Using default sleep value = $SLEEPTIME secs"
    echo "Please ^C to break from loop"
    echo "-------------------------------------------"
    while true; do
        do_authen
        sleep $SLEEPTIME
    done
;;
noloop)
    getautheninfo
    do_authen
    echo "Done."
;;
logout)
    do_logout
    echo "Logging out at $(date), goodbye."
;;
*)
    echo "Usage: $0 [login|logout|noloop]"
    exit
;;
esac

# ---------------------------------------------------------------------    #
# end of file.                                #
# ---------------------------------------------------------------------    #

สามารถ download ได้จาก ที่นี่

การใช้งาน จะต้องการโปรแกรม curl และ bash shell

ซึ่ง bash shell เป็น default shell ที่ติดตั้งอยู่บน Linux distribution ส่วนใหญ่แล้วทั้งหมด สามารถเรียกใช้งานได้ทันที ส่วนโปรแกรม curl ส่วนใหญ่แล้วก็จะเป็น package ที่มีอยู่แล้ว แต่อาจจะไม่ได้ ติดตั้งเอาไว้ สามารถติดตั้ง เพิ่มเติมได้ โดยใช้คำสั่ง

$ sudo apt-get install curl

สำหรับ ตระกูล debian/ubuntu หรือ

$ sudo yum  install curl

สำหรับ  ตระกูล centos/fedora/redhat

การใช้งาน

ถ้าเครื่องที่ใช้เป็น notebook ส่วนตัวที่ใช้อยู่เพียงคนเดียว ไม่มีคนอื่นมาร่วมใช้งานด้วย ข้อมูลที่เป็นความลับ สามารถเก็บไว้ได้อย่างปลอดภัย ก็สามารถสร้าง ไฟล์ที่ใช้เก็บ login และ password ของ PSU Passport เอาไว้บนเครื่อง ใน Home directory ของ ตนเองเอาไว้ได้ โดยมี format ตามนี้ครับ

user=USERNAME

pwd=PASSWORD

 โดยที่ USERNAME คือชื่อ login สำหรับ PSU Passport และ PASSWORD คือ password สำหรับ PSU Passport

โดยสร้างเก็บไว้ในไฟล์ชื่อ ".psuautosigned" และ เก็บไว้ใน home directory (หมายเหตุ: ชื่อไฟล์ .psuautosigned มี เครื่องหมาย '.' นำหน้า psuautosigned)

หรือในกรณีที่ไม่ต้องการเก็บ login/password เอาไว้ในไฟล์ และ ไม่ได้สร้างไฟล์ .psuautosigned เอาไว้ เมื่อเรียกใช้ script

$ ./psuautosigned

ตัว script ก็จะถาม login และ password ที่จะใช้สำหรับ การ login กับ login.psu.ac.th โดยอัตโนมัติ

ตัวโปรแกรม จะทำงานโดยการ authenticate และ refresh page รวมทั้ง login ใหม่ถ้าจำเป็นโดยอัตโนมัติ การ refresh จะทำทุกๆ 10 นาที ตามค่า default ในหน้า login ของ PSU

เมื่อเรียกใช้แล้ว ตัว script จะพิมพ์ข้อความในลักษณะนี้ออกมา

Using default sleep value = 600 secs
Please ^C to break from loop

Last refreshed : Tue, 15 Jun 2010 13:53:48 +0700 : 172.30.80.17

...

และจะพิมพ์บรรทัดใหม่ออกมาเรื่อยๆทุกครั้งที่มีการ refresh page ถ้าต้องการหยุดโปรแกรม  ก็ให้กดปุ่ม Control-C

ถ้าต้องการให้ authentication เพียงครั้งเดียว ไม่มีการ วน loop ซึ่งสามารถเอาไปใช้กับ crontab ได้ในกรณีที่ต้องการ ก็สามารถทำได้ โดยใช้ option "noloop" เพิ่มเข้าไปหลังคำสั่ง แบบนี้ครับ (ตัวอย่าง สำหรับ crontab)

0 0 * * *    /home/cj/bin/psuautosigned noloop >> /tmp/autosigned.log

 สำหรับสมาชิกของ มอ. ส่วนใหญ่ (หรือเกือบทั้งหมด) script ตัวนี้คงไม่มีประโยชน์อะไร หรือ แม้แต่ตนที่ใช้ Linux เอง การใช้จาก web browser และให้ตัว browser ช่วยในการจำ login และ password เอาไว้ อาจจะเป็นวิธีการที่ช่วยลดเวลา ในการทำงานได้มากกว่า การนั่งอ่านบันทึกนี้ และ พยายาม เอา script นี้ไปใช้ ... แต่สำหรับ ผมเอง นี่เป็นอีก script หนึ่งที่ผมใช้ในชีวิตประจำวัน และ รู้สึกสนุกดี ที่ได้เขียน ทั้งตัว script และ บันทึกนี้เองด้วย

ขอบคุณครับ ที่ทนอ่านมาจนถึงบรรทัดนี้

สวัสดีครับ

หมวดหมู่บันทึก: เรื่องทั่วไป
สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ Copyright
สร้าง: 15 มิถุนายน 2553 12:32 แก้ไข: 05 กรกฎาคม 2553 14:27 [ แจ้งไม่เหมาะสม ]
ดอกไม้
สมาชิกที่ให้กำลังใจ: Ico24 akapop.t และ Ico24 บิวตี้.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

ความเห็น

เยี่ยมมากๆ ครับ

เท่าที่ผมประสบมา ไม่ว่า จะใช้ OS ใด และ browser ตัวใด มีโอกาสเกิด(การ redirect ที่แปลกๆ) เหมือนๆ กันครับ บางครั้งก็ให้ต้องรออยู่อย่างนั้น แม้ว่า จะป้อน user name และ password ไปแล้ว ... ไม่ทราบเกิดจากเหตุอะไร ทีมงานศูนย์คอมฯ น่าจะหาทางแก้ไขปัญหาด้วยนะครับ ไม่ควรเลี่ยงด้วยการใช้เทคนิคประหลาดๆ 

ปกติผมจะชินกับการใช้ sh มากกว่า bash แม้ว่า จะทำงานภายใต้ bash ก็ตาม เวลาเรียกใช้ shell script ก็มักจะเรียกด้วย sh เสมอ เช่นกรณีนี้ก็เรียกด้วย sh  psuautosigned ปรากฎว่า มันบอกว่ามีวงเล็บเกินมาที่บรรทัดที่ 59 ซึ่งเมื่อเปิดดูก็พบว่า เป็นบรรทัดแรกของ function ...

ค้นดูก็พบว่า sh ต่างจาก bash ในกรณีนี้ที่การ declare function ครับ  ถ้าเป็น sh ไม่ต้องมีคำว่า function นำหน้า แต่ bash ต้องมี

 

อ้า ... ผิดจริงๆด้วยครับ

ขอบคุณ อ.ปัญญรักษ์ครับ  ที่ช่วยตรวจสอบและแก้ไขให้

ผมแก้ script ใน บันทึกและใน link แล้วครับขอบคุณครับ

แต่ผมค่อนข้าง แปลกใจนะครับเนี่ย ว่ายังมีคนอื่นนอกจากตัวผมเอง ที่จะเอา script ตัวนี้ไปใช้ :)

สุดยอดเลยครับ

Ico48
เจ้าเมือง [IP: 192.168.100.112]
16 มิถุนายน 2553 09:21
#57924
ขอบคุณครับ

มีประโยชน์มากครับ โดยเฉพาะเวลาทำ Server ทดสอบที่เป็น Text Mode แล้วต้องไปเอาไฟล์บางอย่างบน Internet มาใช้

ขอบคุณครับ

 PS: แต่มีปัญหากับ Password ที่ใช้ @ นะครับ ไม่ทราบใครเจอบ้าง ผมต้องเขียน .psuautosigned ครับถึงจะไปได้ ทาง command line ไม่ได้

PS: แต่มีปัญหากับ Password ที่ใช้ @ นะครับ ไม่ทราบใครเจอบ้าง ผมต้องเขียน .psuautosigned ครับถึงจะไปได้ ทาง command line ไม่ได้

อ้า ... Bug ตัวเบ้อเริ่มเทิ่มเลยครับ ไม่ได้เป็นปัญหาที่ ตัวอักษรใน password หรอกครับ แต่เป็นปัญหาใน script ของผมเองครับ

ลอง download ตัวใหม่ไปใช้งานดูครับ

Ico48
เจ้าเมือง [IP: 192.168.100.112]
23 มิถุนายน 2553 09:47
#58119

ตัวใหม่ที่โหลดจาก fivedots ใช้งานไม่ได้ครับ

yai@enterprise ~ $ sh psuautosigned
Using default sleep value = 600 secs
Please ^C to break from loop

Try authenticated at Wed Jun 23 09:47:11 ICT 2010
curl: (7) couldn't connect to host
Failed to authenticated at Wed Jun 23 09:47:11 ICT 2010

แต่เปิดเบราเซอร์แล้วเข้า http://login.psu.ac.th ได้

แก้ไขแล้วครับ

สาเหตุที่ใช้งานไม่ได้ เพราะว่า web login ย้ายจาก http://login.psu.ac.th ไปอยู่ที่ http://login.psu.ac.th/login.php 

โดยหน้าแรกเดิมเปลี่ยนเป็น frame เพิ่ม animation เข้ามาครับ

ขอบคุณครับ

แก้ไข script เพิ่มนิดหน่อยครับ เพื่อรองรับฟังก์ชันของการ logout

ถ้าใช้ไปแล้วต้องการ logout ทันทีก็ให้ กดปุ่ม Control-C แล้วเรียก script ใหม่โดยมี argument เป็น logout

$ bin/psuautosigned logout

ก็จะ logout ไปจากเครื่องนั้นภายในเวลาประมาณ ครึ่งนาที แทนที่จะต้องรอ ให้ timeout เองครับ

cj@nilanont:~$ bin/psuautosigned login
-------------------------------------------
Using default sleep value = 600 secs
Please ^C to break from loop
-------------------------------------------
Try authenticated at Thu Jun 24 14:57:41 ICT 2010
Last refreshed : Thu, 24 Jun 2010 14:57:41 +0700 : 172.30.2.128
^C
cj@nilanont:~$ bin/psuautosigned logout
Request to logout at Thu Jun 24 14:57:49 ICT 2010, please wait ...
chatchai.j IP=172.30.2.128 has been logged out.
Logging out at Thu Jun 24 14:58:12 ICT 2010, goodbye.
cj@nilanont:~$

หมายเหตุ: เวลาสำหรับการ signed-in ค่อนข้างเร็ว แต่ signed-out ค่อนข้างช้านิดหน่อย ไม่ทราบว่าทำไมเหมือนกันครับ

ล่าสุด frame ซึ่งใช้แยก หน้า login กับหน้า โฆษณา หายไป http://login.psu.ac.th/login.php ไม่มีอยู่อีกต่อไป การยืนยันตัวใหม่ หลังจาก login แล้ว ย้ายไปอยู่ที่หน้า keepalive.php แทน

เพื่อให้ script ตัวนี้สามารถใช้งานได้ ก็ต้องปรับเปลี่ยนตัว script อีกครั้ง ...

จาก

LOGIN="http://login.psu.ac.th/login.php"

เป็น

LOGIN="http://login.psu.ac.th/keepalive.php"

ครับ

Ico48
Mr. Panyarit Junda [IP: 192.168.100.112]
07 กรกฎาคม 2553 01:37
#58550

ผมได้นำ  script  ของอาจารย์มาใช้แล้วครับ

script ของอาจารย์เป็นประโยชน์ต่อserverโปรเจค

ของผมมากครับ

ขอบพระคุณอาจารย์มากครับ  ( ซึ้งใจ ครับ )

 

 

Ico48
วิบูลย์ วราสิทธิชัย [IP: 192.168.2.41]
27 ธันวาคม 2554 09:55
#73273

วันนี้ผมจะอัปเดต ubuntu server ของผม ซึ่งไม่ได้รันกราฟิคโหมด จึงมีเพียง console ทำให้ผมไม่สามารถสั่งอัปเดตได้

จึงระลึกได้ว่าเคยเห็นอ.ฉัตรชัย เขียนคอมเมนต์ไว้ในเฟสบุ๊ค จึงเข้าไปค้นดู ได้ดาวน์โหลด http://fivedots.coe.psu.ac.th/~cj/scripts/psuautosigned.txt แล้วไปอ่านวิธีใช้จาก http://share.psu.ac.th/blog/etc/16591 แล้วอ่านคอมเมนต์จากหลายๆท่านในหน้านี้ แล้วทดสอบเรียกใช้งานดูด้วยคำสั่ง sh psuautosigned.txt มันเด้งถาม

netadmin@netman:~$ sh psuautosigned.txt

User: wiboon.w

Passwd: ใส่รหัสผ่านถูกต้อง

-------------------------------------------

Using default sleep value = 3600 secs

Please ^C to break from loop

-------------------------------------------

Try authenticated at Tue Dec 27 09:43:15 ICT 2011

Last refreshed : Tue, 27 Dec 2011 09:43:21 +0700 : 192.168.x.nn

แล้วตอนนี้ก็สามารถจะเข้า ssh จากอีก terminal หนึ่ง สั่งอัปเดต

sudo apt-get update

sudo apt-get dist-upgrade

ได้แล้ว

ขอบคุณครับ

Ico48
อาจารย์จิรวัฒน์ [IP: 192.168.212.252]
13 กันยายน 2555 13:44
#80468

ขอบคุณมากครับอาจารย์

ทำให้ผมทำงานได้สะดวกขึ้นเยอะครับ ผมเป็นอีกหนึ่งคนที่ต้องการ remote และ authen ในแบบ text mode

Ico48
biglek [IP: 172.19.51.64]
24 กรกฎาคม 2557 10:22
#99269

ปกติผมก็ใช้สคริปต์นี้มาตั้งนานแล้วบน ubuntu ก็ไม่มีปัญหาอะไร แต่วันนี้มาใช้บน centos มันเออเร่อแบบนี้อ่ะคับ

[root@localhost ~]# sh psuautosigned.txt

User: preecha.b

Passwd:

-------------------------------------------

Using default sleep value = 600 secs

Please ^C to break from loop

-------------------------------------------

Try authenticated at Thu Jul 24 10:17:18 ICT 2014

curl: option --data-urlencode: is unknown

curl: try 'curl --help' for more information

2014-07-24 10:17:18 ERROR: do_authen() [:1] failed.

curl: option --data-urlencode: is unknown

curl: try 'curl --help' for more information

2014-07-24 10:18:18 ERROR: do_authen() [:2] failed.

น่าจะเป็นเพราะว่า curl version ที่ใช้งานอยู่บน centos option "--data-urlencode" น่ะครับ

ผมไม่แน่ใจว่าเป็น centos version ใหน และที่สำคัญ curl version ใหน

ซึ่งถ้า version ของ curl ไม่ใหม่พอ ก็อาจจะมีปัญหาครับ เพราะฟังก์ชันการทำงานของ

script ที่ผมเขียน ก็ขึ้นอยู่กับโปรแกรมที่ชื่อว่า curl ตัวนี้ครับ

ลองใช้คำสั่ง curl --help กับ curl --version แล้ว copy ผลลัพธ์มาให้ดูหน่อยครับ

เผื่อว่า อาจจะมีทางที่ดัดแปลงโปรแกรมได้ครับ

ร่วมแสดงความเห็นในหน้านี้

ชื่อ:
อีเมล:
IP แอดเดรส: 34.239.158.107
ข้อความ:  
เรียกเครื่องมือจัดการข้อความ
   
ยกเลิก หรือ