kịch bản khởi động: chạy một tác vụ sau khi kết nối mạng


23

Tôi đang làm việc để chuyển thiết lập máy chủ hiện tại của mình sang phần cứng mới hơn và chuyển từ koala karmic koala sang lucyn lynx. Hiện tại tôi đang sử dụng gw6c (được biên dịch từ trang web gogo6, trái ngược với phiên bản từ kho lưu trữ) để có quyền truy cập ipv6 cho các hệ thống của tôi. Trên hệ thống koala karmic, tôi đã sử dụng tập lệnh init.d đơn giản để bắt đầu ứng dụng khách ipv6

 #! /bin/sh
/usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf

Tôi hình dung vì cái này chạy ở bất kỳ runlevel nào, nó sẽ dịch sang

respawn
console none

start on startup

stop on shutdown

script
exec /usr/local/gw6c/bin/gw6c -f /usr/local/gw6c/bin/gw6c.conf
emit free6_ipv6_started
end script

điều này hoạt động tốt bắt đầu từ initctrl, nhưng dường như không khởi động khi khởi động. - trạng thái của nó đang dừng / chờ đợi. Nó hoạt động tốt (và hồi đáp) khi bắt đầu khác. Mọi ý tưởng về việc tôi đang sai ở đâu, và điều gì sẽ là 'tranh luận bắt đầu' thích hợp?

EDIT: lỗi chính xác là 'init: gw6c quy trình chính (xxx) đã kết thúc với trạng thái 8', sau đó là quá trình hồi sinh, với xxx là nghi ngờ về PID. Tôi cũng nghi ngờ một nửa điều này là do gw6c bắt đầu trước khi kết nối mạng và tôi cần eth0 của mình trước khi gw6c hoạt động

Câu trả lời:


27

Rõ ràng

respawn
console none

start on (local-filesystems and net-device-up IFACE!=lo)
stop on [!12345]

script
chdir /usr/local/gw6c/bin/

exec /usr/local/gw6c/bin/gw6c 
end script

dường như làm việc


Vâng, gần đây tôi đã viết một vài cái sử dụng thiết bị mạng và thiết bị mạng xuống hoạt động hoàn hảo.
Andy Shellam

tôi đã không tìm thấy nó ở bất cứ đâu trong tài liệu. ai đó trong danh sách gửi thư địa phương đã giúp tôi ra ngoài
Journeyman Geek

Đây chính xác là những gì tôi đang tìm kiếm. Nó vẫn chưa có trong tài liệu mới nhất ở bất cứ nơi nào tôi có thể tìm thấy.
Nathan

4

Đặt một kịch bản bắt đầu gw6c vào

/etc/network/if-up.d

Tất cả các tập lệnh trong thư mục đó được chạy sau khi một giao diện xuất hiện. Nếu bạn chỉ muốn nó chạy khi eth0 xuất hiện thì hãy chỉnh sửa mục eth0 trong

/etc/network/interfaces

và thêm một cuộc gọi vào kịch bản

iface eth0 inet dhcp
  up /etc/init.d/gw6c restart

Tôi cũng sẽ đề nghị thêm các tập lệnh trước xuống để tắt đường hầm trước khi giao diện ngoại tuyến.

Khi bạn làm điều đó và tìm thấy một triển khai hoạt động, đăng nó trở lại đây để tôi có thể sử dụng nó. Tôi đã có gw6c trên máy tính xách tay của mình nhưng tôi đã rất lười biếng để tự động hóa nó.


Kịch bản cũ tôi đã đăng hoạt động khá tốt - mặc dù tôi cần phải tự khởi động lại nó, nếu kết nối của tôi tự thiết lập lại - đây là để khởi động, được mặc định trên lynx sáng suốt.
Journeyman Geek

1

Cảm ơn bạn "The Journeyman geek" :) Bạn đã tiết kiệm cho tôi rất nhiều thời gian. Tôi đã chiến đấu với tập lệnh /etc/init.d/gw6c, thử một số thời gian với "sysv-rc-conf -p" và tự hỏi tại sao nó không hoạt động (còn gọi là WTF?).

respawn
console none

start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [!12345]

script

exec /etc/init.d/gw6c start
end script

Kịch bản sửa đổi một chút ("runlevel" và lệnh exec) đã thực hiện công việc! :) :) :)


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.