Tag Archive command

Byphunsanit

forward proxy ด้วย cntlm

มีวิธีที่ดีกว่าตัวนี้ แก้ composer, npm ผ่าน proxy แล้วไม่ทำงาน

ทำให้ command line มันสามารถออกไปอินเตอร์เน็ตได้หลัง proxy ntlm ขวางอยู่โดยใช้ cntlm ไม่ยากเลยแค่ทำตามวิธีง่ายๆ

  1. ก่อนอื่นก็ไปโหลด Cntlm Authentication Proxy
  2. ติดตั้งแล้วเปิดไฟล์ C:\Program Files (x86)\Cntlm\cntlm.ini แก้โดย
    Username

    ใส่ user ของ proxy ntlm ลงไปเช่น pitt.p

    Domain

    domain ที่ใช้ login windows ก่อน username นั่นละ

    Password

    password ที่ใช้ login windows

    Proxy

    คือ proxy ที่ใช้เข้าเน็ตที่เซ้ตไว้ใน windows ถ้าไม่รู้ก็ดูจาก How to Configure a Proxy Server on Windows บางครั้งอาจจำต้องดูจากไฟล์ .pac อีกทีว่าบรรทัด ที่มีคำว่า “proxy ” มันชี้ไปที่ไหน
  3. เซ็ต environment variables ตามวิธี How to set the path and environment variables in Windows ถ้าเซ้ตไม่ได้ มีอีกวิธี แก้ / เพิ่ม windows environment variables registry โดยกำหนด http_proxy และ https_proxy ให้มีค่าเท่ากับ 127.0.0.1:3128
  4. restart และลองใช้ command อย่าง เช็คเน็ตตัวย curl ดูว่าใช้ได้มั๋ย

เพื่อความมันใจอาจจะแก้ password ที่เก็บเป็น plain text password ให้มันปลอดภัยขึ้นโดยการเข้าระหัสมันซะก็ทำตามวิธี Using CNTLM to enable NTLMv2 authentication for any application

จริงๆ แล้วมี ntlm proxy forwarder อีกหลายตัว บางตัว update บ่อยกว่าตัว cntlm มาก เช่น px หรือ NTLM Authorization Proxy Server แต่ผมไม่เคยใช้ อาจจะดีกว่า อันนี้ต้องลองดูครับ

อ่านเพิ่มเติม

Byphunsanit

set Environment โดย command line

เราสามารถเซ็ต Environment Variables ได้โดยใช้ command line ง่ายๆ แค่พิมพ์ set หรือ setx เท่านั้นเอง

ก่อนอื่นก็ดูก่อนว่า Environment Variable ตัวนี้เซ็ตเอาไว้รึยัง รูปแบบคือ echo %{variable name}% ตัวอย่าง echo %path% ถ้ามีค่าจะได้ค่าออกมา ถ้าไม่เคยมีมาก่อนจะ retuen %{variable name}% กลับมา

ใน windows จะไม่สนใจตัวเล็กตัวใหญ่ (case insensitive) ดังนั้นตัวแปรที่เซ็ตชื่อ PATH หรือ path ก็คือตัวเดียวกัน

ถ้าใช้ windows 10 build ใหม่ๆ สามารถใช้ คำสั่ง setx รูปแบบคือ setx {variable name} {variable name} เช่น setx http_proxy 127.0.0.1:3128 หรือ setx https_proxy 127.0.0.1:3128

ถ้า windows ที่เก่ากว่านั้นก็ใช้ set เช่น set http_proxy=”127.0.0.1:3128″ หรือ set https_proxy=”127.0.0.1:3128″ ต่างกันที่ มี x กับ ไม่มี x แค่นั้นเหรอ จริงๆแล้ว set ใช้ง่ายกว่ามากโดย

  • จริงๆ ไม่ต้องมี ” ก็ได้นะ จะใช้ set http_proxy=127.0.0.1:3128 หรือ set https_proxy=127.0.0.1:3128 ก็ได้ ถ้าไม่มีพวกสเปส อักษรพิเศษอยู่ข้างใน
  • เพิ่มค่าเข้าไปได้ง่ายๆ อย่างตัวแปร PATH ที่ใครๆ โปรแกรมไหนๆก็อย่างเข้าไปอยู่ข้างใน แค่ใช้ SET PATH=%PATH%;c:\whatever\else แค่นี้ก็เพิ่มเข้าไปต่อจากตัวเดิมแล้ว
  • เอา Environment Variables ออกไปได้ง่ายๆ แค่ไม่ใส่ค่าลงไป set https_proxy แค่นี้ก็ลบออกไปได้แล้ว

อ่านเพิ่มเติม

Byphunsanit

เช็คเน็ตตัวย curl

อ่านหัวข้อแล้วอาจจะงงทำไม่ไม่เปิดกับ browser ละง่ายจะตาย ความจริงคือ composer มันไม่สามารถติดตั้งอะไรได้เลย แม้แต่ตัวมันเอง แต่สามารถใช้ command ping ได้ปกติ คนทำ proxy ก็บอกของเค้าปกติ เลยต้องใช้ curl มาเปิดเว็บดู

ทดลองโดยใช้

curl -v http://pitt.plusmagi.com

ที่นี้เห็นชัดเลยว่า มันไม่ผ่าน authen ของ proxy ทั้งๆ ที่เปิดเว็บเข้าไปดูอะไรต่ออะไรได้ปกตินั่นละ url เดียวกัน port เดียวกัน แต่ดึงข้อมูลกับ command กลับไม่ได้ ไม่เอา ผล ให้ดูนะเดี๋ยวชื่อ server เค้าจะหลุดออกมาข้างนอก แต่มันบอกตรงตัวเลยว่า ติด authen ที่ ntlm proxy มันนี่ละไม่ต้องหาอื่นไกล ทดลองอีกทีโดยใช้

Curl -x { proxy name / proxy ip }:{ port } --proxy-user { domain name ตอน login windows }\{ username }: password -L http://pitt.plusmagi.com

username, password และ domain ก็ตัวที่ใช้ออกเน็ตนี่ละ ดูจากผล command line ออกเน็ตผ่าน proxy ได้แล้วละ

เจอสาเหตุแล้วที่นี้เรามาแก้ให้ออกเน็ตกับ command line ได้กัน forward proxy ด้วย cntlm

Byphunsanit

หาเครื่องที่เปิดอยู่ในบ้าน / ที่ทำงาน

แทนที่จะไล่หาว่าเครื่องไหนมันเปิดอยู่บ้างที่ละเครื่องสามารถใช้ command ping เครือข่ายทั้งยวงได้โดยใช้คำสั่ง

FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i | FIND /i "Reply">>c:\ipaddresses.txt

ผลที่ได้จะถูกเขียนลงในไฟล์ c:\ipaddresses.txt

...
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
...
Reply from 192.168.1.61: bytes=32 time=2ms TTL=64
Reply from 192.168.1.62: bytes=32 time=5ms TTL=64
Reply from 192.168.1.63: bytes=32 time<1ms TTL=128
Reply from 192.168.1.64: bytes=32 time<1ms TTL=128
...
Reply from 192.168.1.1: Destination host unreachable.
...

อธิบายคือไล่ ping เครื่องตั้งแต่ ip 192.168.1.1 ถึง 192.168.1.254 ถ้าเครื่องไหนตอบกลับมา (เปิดอยู่) แล้วเขียนไว้ในไฟล์ c:\ipaddresses.txt ถ้าเปิดดูก็จะเห็นตัวหนังสือประมาณ bytes=32 time=2ms TTL=64 ส่วนที่หาไม่เจอ ไม่ตอบกลับมา ก็จะได้ข้อความซ้ำๆ มาจาก router อย่าง Reply from 192.168.1.1: Destination host unreachable.

ดีกว่าไล่ดูทีละเครื่องเยอะเลย
Cr: Ping all addresses in network, windows

Byphunsanit

laravel / PHP error 500

เจอ error 500 หลังจาก upload งานที่เขียนโดยใช้ laravel ทั้งๆที่เทสในเครื่องแล้ว หาสาเหตุอยู่นานก็ไม่เจอ

การตรวจสอบขั้นต้นที่เจอในเว็บทั่วๆไปคือ ให้ตั้ง permission ใหม่โดย

  • folder ให้เซ็ตเป็น 755 โดย
    find . -type d -exec chmod 755 {} \;
  • และตั้งไฟล์เป็น 644
    find . -type f -exec chmod 644 {} \;
  • ถ้าไม่หาย อาจะเพราะ user ที่ run apache กับ ftp หรือ เจ้าของไฟล์เป็นคนละ user กัน ทำให้การทำงานทำได้ไม่สมบูรณ์ แก้ได้โดยคำสั่ง chmod -R o+w โดยถ้าเก็บงานไว้ที่ /colume1/web/CMS_linux ก็ใช้

    chmod -R o+w /colume1/web/CMS_linux

    ถ้าไม่เข้าใจอ่าน การเปลี่ยนสิทธิอนุญาตในไฟล์หรือไดเร็กทอรี

Byphunsanit

Command Save Query Results to file

ถ้าต้อง query ทุกๆ วัน หรือ ทุกๆ ชั่วโมง แล้วเอาผลลัพธ์มาเก็บไว้ จะดีมั๋ยที่ทำเป็น schedule ไว้แล้วให้ทุกสิ่งทุกอย่างมันดำเนินไปตามที่มันควรจะเป็น โดยที่เราไม่ต้องทำเองทุกวัน

  1. สร้างไฟล์ที่เก็บ query ไว้ก่อนโดยผม save query จากเรื่อง สร้าง Data Dictionary แค่คลิก เป็นไฟล์ชื่อ DataDictionary.sql
  2. เปิด command ขึ้นมาโดยพิมพ์ sqlcmd ตามด้วย
    sqlcmd Utility
    Option ความหมาย ตัวอย่าง
    -S [protocol:]server[instance_name][,port] connection ของ sql server ของผมคือ MAGI\SQLEXPRESS
    -d db_name ชื่อ database
    -E (use trusted connection)
    -i input_file
    -o output_file ไฟล์ผลลัพธ์คือ OutFileName.txt

    สิศิรวมแล้วคือ

    sqlcmd -S MAGI\SQLEXPRESS -d test -E -i DataDictionary.sql -o OutFileName.txt
  3. หลังเอ็นเทอร์ไฟล์ OutFileName.txt จะถูกสร้างขี้นมาอยู่ที่เดียวกับไฟล์ DataDictionary.sql
  4. นำไปดัดแปลงตามความเหมาะสมกับงานที่ทำครับ

อ่านเพิ่มเติม

Byphunsanit

เอา Linux กลับมาหลังลง Windows

สิ่งที่น่าเบื่อสำหรับคนที่ลง dual boot สองระบบ linux และ windows คือขาใหญ่วินโดวส์ ไม่ยอมรับรู้ว่าโลกนี้มันมีน้องเล็กลีนุกซ์อยู่ในโลกด้วย ขณะที่เพนกวินพยามตามใจพี่ใหญ่ โดยยอมให้ติดตั้งตัวเองในวินโดวส์ หรือลงทีหลังแบบไม่ไปทับพี่ใหญ่ก็ได้ ขอแค่พื้นที่ 6 – 7 GB พออยู่อย่างเจียมเนื้อเจียมตัวก็แล้ว แต่เมื่อไหร่ลูกพี่ใหญ่วินโดวส์เค้ามีอันเป็นไป อยากเป็นจอฟ้าขึ้นมา ให้มีอันต้องลงใหม่ หรือออกรุ่นใหม่มาให้ยลและลิ้มลอง มันก็จะลบ grub (คือ boot loader ที่ทำให้เครื่องเดียวกันลงได้ทั้ง windows และ linux) ทีนี้ทำให้เราๆต้องมาลงวินโดวส์พร้อม linux ทบทวนวิชากันอีกครั้ง ทั้งที่ความจริง Linux ยังอยู่ดีมีสุขอย่างเดิมไม่ได้รับการกระทบกระเทือนใดๆ เลย แต่ไม่มีใครเห็นมันเท่านั้นเอง

เรากลับไปใช้มันได้ใหม่โดยก่อนอื่นต้องลง windows ให้เรียบร้อยก่อน จากนั้นใช้ linux live cd / dvd คือแผ่นลงลีนุกซ์นั้นละ บูทเครื่องแล้ว เราจะซ่อม grub โดยไปที่ command ตามนี้

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update

กด Enter ใส่รหัสผ่านลงไป รอ…

sudo apt-get install -y boot-repair && boot-repair

กด Enter รอ…

มันจะมีหน้าต่างเปิดขึ้นมามากมายตระการตาไม่ต้องสนใจ ปล่อยๆ มันไปตามสบาย รอจนมีเมสเสจบอกว่าคุณ restart ได้ เอาแผ่นออกเริ่มระบบใหม่ได้เลย เปิดเครื่องอีกครั้ง grub จะกลับมาให้ใช้อีก ประหยัดเวลาลง tuk ได้อีกอย่างน้อยก็ชั่วโมงหนึ่ง

อ่านเพิ่มเติม

Byphunsanit

Share net ผ่าน Wi-Fi

กลับบ้านปีใหม่ จะโอนเพลง โปรแกรม ข้อมูลต่างๆ สารพัด ระหว่างคอมพิวเตอร์เครื่องเก่า เครื่องใหม่ ไอโพน โทรศัพท์อีกเครื่อง คิดไปติดมา จำนวนก็ไม่ใช้น้อยๆ จะให้ใส่ flash dive copy ไปมาแค่รอคัดลอก ลบออก คงไม่ต้องทำอะไรกันพอดี จะต่อผ่านสายก็ไม่มีสายแลนซักเส้น คิดไปคิดมาทุกชิ้นต่อไวไฟได้แต่ไม่มีไวไฟเร้าเตอร์ ไม่เป็นไรเคยอ่านเจอว่า windows 7 มีวิชวล hotspot แต่หาใน control panel ยังไงก็หาไม่เจอ
ถามพี่เกิ้น ไปเจอวิธีเร็วๆ ไม่ต้องโหลดโปรแกรม ที่ Create a Virtual Wireless Router with Windows
ไป run command (ใช้สิทธิ administrator) พิมพ์คำสั่งตามรูปแบบ
netsh wlan set hostednetwork mode=allow ssid=YourVirtualNetworkName key=YourNetworkPassword
เช่น จะสร้าง net ของเราเองชื่อ MyHome มีรหัสผ่าน raHatPan ก็พิมพ์
netsh wlan set hostednetwork mode=allow ssid= MyHome key= raHatPan แล้ว enter
แค่นี้ก็ได้ net ส่วนตัวของเราแล้ว เวลาจะใช้ก็เข้าไปที่เดิม พิมพ์
netsh wlan start hostednetwork
ใช้เสร็จก็ปิดพิมพ์
netsh wlan stop hostednetwork
ถ้าอยากรู้ว่าใครแอบมาแจมแอบใช้ net เรารึเปล่าใช้
netsh wlan show hostednetwork

Byphunsanit

copy รายชื่อไฟล์อย่างเร็ว

จะส่งรายชื่อหนังที่มีให้เพื่อนแต่ไม่อยากที่จะ copy ชื่อไฟล์ที่ละเรื่องก็ใช้เวลามากเกินไป โปรแกรมเมอร์ต้องหาวิธีที่ดีที่สุด งายที่สุด แต่ได้ผลดีที่สุดเสมอ (สรุปว่าหาวิธีขี้เกียจแต่ผลงานออกมาดี) windows ไม่ให้ tools ที่จะแก้ปัญหานี้มาด้วย ดังนั้นเราจะกลับไปให้วิธีเดียวกับสมัยที่ computer อยู่แต่ในห้องทดลองมีคนคุ้มกันแน่นหนาพร้อมคู่มือเล่มหนาเตอะ สำหรับเจ้าหน้าที่วิศวกรผู้ได้รับอนุญาตให้เปิดสวิตซ์ได้เท่านั้น ไม่ต้องกลัวครับบางคนอาจจะค้นพบว่าของโบราณมันง่ายกว่าที่ทำอยู่ทุกวันนี้ก็ได้

  1. ก่อนอื่นเราจะเข้าไปใช้ dos บรรพบุรุษ windows ถ้าคุณใช้ windows 7 พิมพ์ cmd ลงไปแล้ว enter windows อื่นๆ พิมพ์ในช่อง run หรือ กดปุ่มรูป windows พร้อมตัว r จากนั้นพิมพ์ cmd ในกล่องคำถามเปิดขึ้นมา
  2. ปโพลเดอร์ที่ต้องการจะแสดงรายชื่อไฟล์โดยใช้คำสั่ง cd ตามด้วยตำแหน่งที่ต้องการ เช่นจะไปที่โพลเดอร์ c:movie พิมพ์ cd c:movie ในกรณีที่ใช้คำสัง Copy ไว้ก่อนหน้านี้ ให้คลิกขวาหลังคำสั่ง cd แล้วเลือก Paste ได้เลย ถ้าอยู่บนไดร์ฟอื่นที่ไม่ใช้ไดร์ฟซี พิมพ์ชื่อไดร์ฟตามด้วย : เช่น อยู่บนไดร์ฟ k พิมพ์ k: เอ็นเทอร์ พิมพ์ cd k:movie ถ้าไม่เข้าใจลองอ่าน คำสั่ง DOS ที่น่ารู้
  3. พิมพ์ dir /b /s > list.txt จะได้รายชื่อไฟล์และโฟลเดอร์ทั้งหมดเก็บไว้ในไฟล์ list.txt ในโฟลเดอร์ k:movie

คำสั่งนี้สามารถปรับแต่งผลลัพธ์แบบอื่นๆได้อีกลองอ่านหัวข้อ DIR command line switches ที่
Print a list of directory contents in Windows 2000 with DOS