'sudo ifconfig en0 down' - ไม่ได้ค้างอยู่ใน OS X?


1

เป้าหมายของฉันคือยกเลิกทราฟฟิกอีเธอร์เน็ตทั้งหมดผ่าน en0 จนกว่าฉันจะนำมันกลับมาด้วย ifconfig en0 up.

เมื่อฉันวิ่ง ifconfig en0 down ผ่านเทอร์มินัลแล้วยืนยัน ifconfig และอินเทอร์เฟซทั้งหมดไม่ทำงาน

อย่างไรก็ตามในวันถัดไปฉันพบว่า en0 สำรองโดยอัตโนมัติ ฉันจะทราบได้อย่างไรว่าเกิดอะไรขึ้นและมีวิธีที่ดีกว่าที่จะทำให้แน่ใจได้หรือไม่


ออกมาจากความอยากรู้อยากเห็นทำ sudo networksetup -setnetworkserviceenabled Ethernet off ประพฤติแตกต่างกันอย่างไร
MacManager

ขอบคุณ @MacManager ฉันไม่ได้ลอง 'sudo networksetup --setnetworkserviceenabled Ethernet ปิด' ฉันจะคืนนี้ ฉันหวังว่ามันจะใช้งานได้!
Harry Potter

@ klanomath ใช่แล้วทั้งหมดนี้ไม่ทำงาน มันแปลกเพราะคุณจะคิดว่า 'sudo ifconfig en0 down' จะอยู่ต่อไป ฉันมักจะตรวจสอบ ifconfig หลังจากและยืนยันมันไป เฉื่อยชา . แต่ฉันพบว่ามีอะไรบางอย่างในเช้าวันรุ่งขึ้นนำมาสำรอง
Harry Potter

แน่นอนค่ะ ในการรับชื่อบริการเครือข่ายที่ฉันใช้ networksetup -listnetworkserviceorder และค้นหารายการ en0
MacManager

@HarryPotter ฉันหมายถึง: หากคุณเพิ่งปิดการใช้งาน en0 ด้วย ifconfig, en1 / en2 ไม่ควรลง / ไม่ใช้งานหากพวกเขาใช้งานมาก่อน
klanomath

คำตอบ:


0

ใช้ networksetup คำสั่ง แทน. ในระบบของฉัน en0 คือ Wi-Fi ดังนั้นฉันจึงใช้ networksetup -setairportpower en0 off. ฉันใช้ AppleScript เพียงเล็กน้อยที่อยู่ใน Dock ของฉันและสลับสถานะ ดู หน้าคู่มือ networksetup สำหรับข้อมูลเพิ่มเติมโดยใช้ networksetup.

บันทึก AppleScript รหัส เป็นแอพพลิเคชั่นชื่อ Toggle Wi-Fi จากนั้นคุณสามารถเรียกใช้ได้ตามต้องการ / ต้องการ หากคุณเปิดใช้งานและเปิดใช้งาน Wi-Fi จะเป็นการปิดและหากปิดอยู่จะเป็นการเปิด

on run
    set interface to "en0"
    set status to do shell script "ifconfig " & interface & " | awk '/status:/{print $2}'"

    if status is "inactive" then
        do shell script "networksetup -setairportpower " & interface & "  on"
        display dialog "The Wi-Fi Network Adapter is turned: ON" with title "Wi-Fi Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    else
        do shell script "networksetup -setairportpower " & interface & "  off"
        display dialog "The Wi-Fi Network Adapter is turned: OFF" with title "Wi-Fi Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    end if
end run

อัปเดตเพื่อระบุการใช้งานอะแดปเตอร์ Ethernet:

on run
    set interfaceNumber to "en0"
    set interfaceName to "Display Ethernet"
    set status to do shell script "ifconfig " & interfaceNumber & " | awk '/status:/{print $2}'"

    if status is "inactive" then
        do shell script "networksetup -setnetworkserviceenabled " & quoted form of interfaceName & " on with administrator privileges"
        display dialog "Network Adapter " & interfaceNumber & " is turned: ON" with title interfaceName & " Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    else
        do shell script "networksetup -setnetworkserviceenabled " & quoted form of interfaceName & " off with administrator privileges"
        display dialog "Network Adapter " & interfaceNumber & " is turned: OFF" with title interfaceName & " Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    end if
end run

หมายเหตุ: ใน รหัส ด้านบนชื่ออะแดปเตอร์อีเธอร์เน็ตของฉันคือ "Display Ethernet" และคุณจะต้องเปลี่ยนเป็นชื่ออะแดปเตอร์อีเธอร์เน็ตของคุณ คุณสามารถตรวจสอบได้ในการตั้งค่าระบบ & gt; เครือข่าย


ที่น่าสนใจในระบบของฉัน en0 และ en1 เป็นอินเตอร์เฟสแบบมีสาย en2 เป็นแบบไร้สาย จริง ๆ แล้วฉันปิดไร้สายผ่านการตั้งค่าเครือข่ายเอง การติดตั้ง toggling ของคุณนั้นเป็นสิ่งที่ฉันกำลังมองหาสำหรับอินเตอร์เฟสแบบมีสาย ฉันสามารถแก้ไข apple script ของคุณเพื่อทำเช่นนั้นได้หรือไม่?
Harry Potter

@Harry Potter ฉันได้อัปเดตคำตอบของฉันพร้อมตัวอย่างโดยใช้อะแดปเตอร์อีเธอร์เน็ต
user3439894

ขอบคุณสำหรับสิ่งนั้น! มันดูฉลาดและดูเหมือนว่ามันจะทำหน้าที่ในสิ่งที่ฉันต้องการให้ทำ แต่ฉันสงสัยว่าทำไมต้องใช้ความพยายามมากขนาดนี้ - เพราะคำสั่งเทอร์มินัลไม่คงอยู่? นั่นคือสิ่งที่ทำให้ฉันงุนงง
Harry Potter

@Harry Potter, AppleScript ดั้งเดิม รหัส ทำงานกับ Wi-Fi ที่ไม่มีสิทธิ์ของผู้ดูแลระบบและฉันทำให้มันเป็นแอพเพราะฉันสลับสถานะของอะแดปเตอร์เครือข่าย Wi-Fi ทุกวันและบางครั้งก็หลายครั้งต่อวัน ใช่ฉันสามารถทำได้ในเทอร์มินัลหรือใช้การตั้งค่า & gt; เครือข่าย แต่มันเกี่ยวกับสิ่งที่ทำให้การกระทำซ้ำ ๆ เป็นวิธีที่ง่ายที่สุดเสมอ มีของคุณ en0 รับ Wi-Fi กับอีเธอร์เน็ตสิ่งนี้จะเป็นเรื่องง่ายเหมือนการใช้สิ่งที่ฉันให้มา สำหรับ Ethernet มันแตกต่างกันเล็กน้อย ที่กล่าวว่าใช้ Terminal หากคุณต้องการ! :) พวกเขาทั้งสองจะทำสิ่งเดียวกัน
user3439894

ขอบคุณ! ฉันจะทำสิ่งนี้ซ้ำ ๆ โทรหาฉันหวาดระแวง แต่ถ้าฉันไม่อยู่ในเครื่องฉันจะปิดการใช้งานอินเทอร์เน็ตทั้งหมด ด้วยสคริปต์ของคุณคุณสามารถสลับหนึ่งสำหรับไร้สายและอีกหนึ่งสำหรับสาย ฉันอาจจะใช้ทั้งสองอย่าง ขอบคุณสำหรับการแบ่งปันชื่นชมมากที่สุด
Harry Potter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.