Cố gắng hiểu phương pháp tự động kết nối lại WIFI


9

Tôi tìm thấy phương pháp kết nối lại dongle WIFI từ bài đăng này . Nhưng, tôi muốn làm rõ về cách thức hoạt động của nó, trước khi tôi thử và thực hiện nó.

  1. Đi đến /etc/ifplugd/action.d/và đổi tên ifupdowntập tin thành ifupdown.original.
  2. Sau đó làm : cp /etc/wpa_supplicant/ifupdown.sh ./ifupdown.
  3. Cuối cùng: sudo reboot
  1. Khi nào được /etc/ifplugd/action.d/ifupdowngọi?
  2. Kịch bản /etc/wpa_supplicant/ifupdown.shvề cơ bản làm gì trong điều khoản của giáo dân, nó có vẻ khá phức tạp đối với tôi; và khi nào nó được gọi là quá.
  3. Có thể thực hiện các bước 1 đến 3 gây ra bất kỳ sự cố không lường trước nào khác có thể ngăn WIFI của tôi hoạt động không? Tôi đang cố gắng thực hiện điều này trên Raspberry PI, thông qua SSH, không có bàn phím và màn hình ở vị trí khó tiếp cận.

Tôi đã cố gắng để Google bit khác nhau, nhưng đã bị mất một chút!

Câu trả lời:


0

ifplugd có nghĩa là phát hiện loại bỏ hoặc kết nối lại một đầu nối ethernet. Thư mục được liên kết /etc/ifplugd/action.d/ lưu trữ các tập lệnh được gọi khi, ví dụ, trình kết nối được cắm (hoặc loại bỏ).

Bước 2 trong quy trình của bạn sẽ khiến kết nối wpa được thương lượng lại khi kết nối được cắm (hoặc gỡ bỏ) và giả định kết nối là WPA. Quá trình đổi tên / sao chép mà bạn mô tả sẽ vô hiệu hóa mọi xử lý tồn tại trước được thực hiện trong tập lệnh ifupdown tồn tại trước đó, có thể không đáng kể hoặc không. Bạn có thể xem xét đơn giản là gọi /etc/wpa_supplicant/ifupdown.sh bằng cách thêm nó vào tập lệnh ifupdown hiện tại (ví dụ ở cuối), nhưng nó phụ thuộc vào việc hiểu những gì đã có trong tập lệnh hiện có (thường đơn giản).

Nếu bạn chỉ muốn đàm phán lại kết nối wifi nếu hoặc khi nó bị rớt, thay vì xử lý ngắt kết nối vật lý của đầu nối, bạn có thể cân nhắc sử dụng cách này:

https://raw.githubusercontent.com/dweeber/WiFi_Check/master/WiFi_Check

Kịch bản đó là mạnh mẽ, chủ yếu là vô hại, và nên thực hiện các thủ thuật mạnh mẽ.


0

Phiên bản ngắn

  1. Đã trả lời bởi dudek rồi; thư mục đó được sử dụng cho các tập lệnh cho hệ thống của bạn biết cách xử lý những thứ được cắm vào nó hoặc không được cắm từ nó.

  2. Xem "Phiên bản dài" để biết cách giải thích cách tôi hiểu được kịch bản được đề cập. Về cơ bản sau khi chạy một số kiểm tra và tải một số hàm externall, nó sẽ kiểm tra xem nó có nên chạy startchuỗi lệnh hay không stop, hoặc lỗi ra và thoát.

  3. Ồ vâng, nó rất có thể khóa bạn khỏi quyền truy cập từ xa nếu bạn chạm vào cấu hình mạng theo cách mà RPi không thích. Tôi đã chạm vào các cấu hình mạng của mình trong quá khứ trên RPi của tôi rằng việc bắt đầu cài đặt mới đơn giản hơn. Hãy cẩn thận và xem xét việc di chuyển tính khí RPi đến một địa điểm dễ dàng để đăng nhập vào địa phương.

Phiên bản dài

Nhìn qua tệp này trên RPi của tôi, nó có vẻ như được nhận xét tốt và nó không sử dụng cho nhiều cuộc gọi chức năng bên ngoài. Nhưng bạn đã yêu cầu các điều khoản của layens, vì vậy tôi sẽ cố gắng hết sức để giải thích về việc tôi sẽ hiểu những loại kịch bản này như thế nào, vì có vẻ như bạn là người dùng RPi như tôi (thiết lập máy chủ từ xa không đầu) có thể kiểm tra những gì tôi đã đọc trên RPi StackExchange để tự động điều chỉnh lại cho các mạng WiFi bị ẩn vì nó có thể có các thủ thuật khác hữu ích cho các yêu cầu máy chủ của bạn.

Để giúp hỗ trợ trả lời các câu hỏi của bạn, đây là một chút phơi bày cú pháp kịch bản shell;

Trong shell ~.shscript, thông thường tìm thấy các hàm được định nghĩa như vậy;

function_name () {
    echo "doing stuff for function_name"
}

và sau đó được gọi thông qua function_namesau trong tập lệnh, đôi khi trong các chức năng khác. Hàm, tệp script và nếu statations chỉ là danh sách các lệnh sẽ chạy. Trong trường hợp các chức năng những thứ giữa {}được điều hành và trong trường hợp của ifstatments những thứ giữa thenfiđược điều hành và trong instences nơi elsehoặc elifđược sử dụng trong ifstatments có điều kiện.

Đối với các tập tin chúng tôi đang disecting có chức năng đặt tên do_start, do_stopvà một số chức năng được xác định trong các tập tin khác ... "Những gì các file là các chức năng khác definded?" hoặc "Làm thế nào để tôi tìm thấy nếu tập lệnh tải các hàm từ tệp b?" là hai câu hỏi chúng ta sẽ phải trả lời trước.

Xung quanh dòng 48trong /etc/wpa_supplicant/ifdown.shđó có một dòng nhận xét (nghĩa là dòng tranh luận với #simble; những dòng này bị bỏ qua bởi người can thiệp vào kịch bản ... chủ yếu) với việc source functionssử dụng liên tục các mục đích của vài dòng tiếp theo ~

# source functions
if [ -f /etc/wpa_supplicant/functions.sh ]; then
    . /etc/wpa_supplicant/functions.sh
else
    exit
fi

Lưu ý đây là một ví dụ tốt về hành vi kịch bản; kiểm tra nếu một tập tin ở đó trước khi cho rằng nó là.

Bit đầu tiên if [ -flà kiểm tra một tệp theo đường dẫn tệp được xác định. Và nếu hiện tại thentải nội dung của tệp qua source(lệnh ngắn gọn source.nhưng tôi tránh sử dụng nó trong tập lệnh của mình vì nó có thể bị sai sót bởi cpcác lệnh khác nhưng tôi có thể truy cập) tệp được xác định bởi đường dẫn. Tiếp theo là elsekiểm tra xem nếu không tìm thấy tệp đó exit 0với trạng thái 0tập lệnh. Sau đó, ifstet kết thúc với ficác hành động đóng để thực hiện nếu điều luật đầu tiên không vượt qua. Hay nói cách khác, nếu /etc/wpa_supplicant/fifts.sh khôngexsist sau đó thoát, nếu không thì tải các hàm đó và tiếp tục xử lý. Loại kiểm tra hòa tan này nếu có giá trị hoặc tệp là thứ bạn sẽ thấy lặp đi lặp lại trong toàn bộ tập lệnh đang đề cập cũng như các tập lệnh khác, -fkiểm tra tệp, -nkiểm tra độ dài chuỗi, -xkiểm tra không chỉ khi có tệp mà còn nếu người dùng đang chạy tập lệnh có quyền thực thi đối với tệp được xác định, hãy -s kiểm tra xem tệp có trống không, -nkiểm tra xem chuỗi không trống hay nullgiá trị và =so sánh chuỗi (hoặc giá trị) trong các thống kê if. Cái gì khác bạn sẽ thấy trong vỏ và bash script trên Linux với ifstatments elifnhưng điều đó cho một ngày khác. Trong kịch bản này là các thủ thuật khác được sử dụng ngoàiifcác thống kê như toán tử ||"hoặc", &&"và" và !"không", chẳng hạn như trên dòng 55~

# quit if executables are not installed
if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
    exit 0
fi

~ Mà chỉ cần đặt tiểu bang, nếu tập tin được định nghĩa bởi $WPA_SUP_BINkhông thực thi hoặc tập tin định nghĩa bởi $WPA_CLI_BINkhông thực thi lối ra sau đó với tình trạng 0mà không cần chế biến thêm. Chúng có thể trông phức tạp lúc đầu nhưng đọc to thành một cú pháp nhân văn hơn có thể giúp ích khi học lần đầu, đối với những người đơn giản và thêm nhận xét #cho những điều phức tạp thực sự hữu ích khi học hoặc quay lại chủ đề sau.

Các tập tin có nguồn gốc nội bộ cũng nên được kiểm tra nếu không chắc chắn về cái gì được gọi trong ifupdown.shtệp. Tôi đề nghị nano /etc/wpa_supplicant/functions.shvà sau đó sử dụng ^whoặc Ctrl+wtìm kiếm xung quanh tên của hàm mà bạn muốn biết thêm. Bởi vì giữa những gì từng có nhiệm vụ gọi kịch bản này và sự xuất hiện của functions.shhầu hết các phân puzzel sẽ được tìm thấy.

Bây giờ mọi thứ bắt đầu nới lỏng một chút đường tròn 135, nơi casebắt đầu một đạo luật, những loại hình này có cấu trúc chắc chắn mà chúng ta có thể sử dụng để giúp giải mã các ý kiến.

case $some_variable in
    start)
         echo "The word [start] was detected in \$some_variable"
    ;;
    stop)
         echo "The word [stop] was detected in \$some_variable"
    ;;
    *)
         echo "The word [$some_variable] was detected in \$some_variable but not understood"
    ;;
esac

Trong ví dụ trên cũng như với các thống kê khác, casevề cơ bản, chúng tôi đang tìm kiếm nội dung của $some_variablecác từ khóa bị từ chối, nghĩa là starthoặc stopnếu từ khóa được tìm thấy thì đưa ra các lệnh được tìm thấy giữa việc tra cứu )và giả ;;định hành động để phân tách các hành động khác nhau để thực hiện các khóa khác nhau từ tìm thấy. Lưu ý trong một số tập lệnh, bạn có thể tìm thấy các số liệu này casetrong forcác vòng lặp nhưng điều đó cũng dành cho một ngày khác.

Trong trường hợp của casebáo cáo trong ifupdown.shkịch bản chúng tôi đầu tiên phù hợp với starthoặc stoptình trạng bên trong $MODEbiến và sử dụng $PHASEgiá trị để phù hợp nếu pre-uphoặc post-upchuỗi các lệnh nên được gọi là hay nếu pre-downhoặc post-downchuỗi các lệnh nên được gọi để thay thế. Nếu startkhông stopđược phát hiện cũng không được phát hiện thì một lỗi được ghi lại, in và tập lệnh được thoát với trạng thái 1lỗi.

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.