Tự động chạy tập lệnh khi tôi kết nối với internet trên máy Mac [trùng lặp]


1

Có thể trùng lặp:
Chạy tập lệnh trong OS X 10.6 trên kết nối mạng. (như /etc/network/if-up.d/)

Tôi thiết lập các đường hầm ssh để tôi có thể truy cập các máy tính khác nhau tại nơi làm việc thông qua cổng. Vấn đề là, tôi không muốn luôn phải thiết lập những thứ này mỗi khi tôi bật máy tính hoặc kết nối / ngắt kết nối với internet vì vậy tôi hy vọng rằng có một cách để tôi có thể tự động chạy tập lệnh shell để thiết lập các đường hầm bất cứ khi nào tôi kết nối với internet. Tôi có một thiết lập tương tự trên máy trạm của tôi trong văn phòng đang chạy Ubuntu và nó sử dụng /etc/network/if-up.d và if-down.d. Có một tương đương trên Mac?


Câu trả lời:


2

Tôi đoán các công cụ nhận biết ngữ cảnh như MarcoPolo có thể thực hiện thủ thuật, chắc chắn nếu bạn sử dụng một số tập lệnh shell để thiết lập các đường hầm:

Kết hợp mờ dựa trên quy tắc linh hoạt trên:

  • [..]
  • Địa chỉ IP được gán
  • Liên kết mạng hoạt động
  • Mạng WiFi có thể nhìn thấy

Các hành động được kích hoạt bằng cách thay đổi ngữ cảnh (nhập hoặc rời), với độ trễ tùy chọn:

  • [..]
  • Gắn kết chia sẻ mạng (smb: //, afp: //, v.v.)
  • Thay đổi vị trí mạng OS X
  • Thoát một ứng dụng
  • Chạy tập lệnh shell (hoặc bất kỳ loại tập lệnh nào khác, thông qua Platypus )
  • Thiết lập hoặc ngắt kết nối VPN

Đây chính xác là điều mà MarcoPolo có thể xử lý và trước đây tôi đã sử dụng nó để thiết lập một đường hầm VPN khi tôi kết nối với một mạng cụ thể (khi chuyển máy tính từ nơi làm việc sang nhà và quay lại). Công cụ rất tiện dụng.
Ian C.

Điều này có vẻ khá hứa hẹn - tôi sẽ phải chơi xung quanh với nó trong vài phút.
thetaiko

3

Không tích hợp sẵn; loại điều này thường được xử lý bởi launchd trên OS X, nhưng các sự kiện lên / xuống mạng không nằm trong danh sách kích hoạt của nó. May mắn thay, PyMacAdmin bao gồm một chương trình, crankd, cung cấp khả năng này. Dưới đây là một ví dụ về việc sử dụng crankd để làm một cái gì đó tương tự (mặc dù anh ta đang sử dụng nó để khởi chạy một mô-đun Python chứ không phải là một kịch bản shell, vì vậy các chi tiết hơi khác một chút). Tôi đã không thử điều này, nhưng có vẻ như bạn chỉ cần tạo một tệp plistd cristd giống như thế này:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>SystemConfiguration</key>
    <dict>
        <key>State:/Network/Global/IPv4</key>
        <dict>
            <key>command</key>
            <string>/usr/local/libexec/networkchangescript</string>
        </dict>
    </dict>
</dict>
</plist>

... sau đó viết / usr / local / libexec / networkchangescript để phát hiện xem mạng có hoạt động hay không (AIUI nó sẽ được khởi chạy cho bất kỳ thay đổi nào, cho dù lên, xuống hoặc đi ngang) và thiết lập các đường hầm nếu thích hợp. Cuối cùng, tạo một bệ phóng để chạy crankd (xem ví dụ tôi liên kết để biết chi tiết).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.