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

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