Làm cách nào tôi có thể hiển thị địa chỉ IP của eth0 tại màn hình đăng nhập trên Máy chủ chính xác?


23

Máy chủ tôi quản trị, đủ bất tiện, có một địa chỉ IP động được gán bởi DHCP. Tuy nhiên, đối trọng thuận tiện là nó được đặt cách chỗ tôi ngồi khoảng hai feet. Tôi biết cách chỉnh sửa / etc / vấn đề để hiển thị các giá trị khác nhau trước khi lời nhắc đăng nhập được gửi đến màn hình, nhưng tôi muốn biết liệu / etc / vấn đề có thể hiển thị địa chỉ IP hiện tại của eth0 không (đánh giá lại tại thời điểm khởi động) để tôi có thể nhìn thấy nó và sau đó ssh in mà không phải đăng nhập để chạy ifconfig.


Conky có thể được sử dụng trong màn hình đăng nhập? Nếu vậy bạn có thể làm cho tất cả các loại thông tin tiện dụng.
dibs

Câu trả lời:


27

Kể từ Debian 8 / jessie, bạn có thể sử dụng \4\6thoát các ký tự để xuất địa chỉ IPv4 và IPv6. Vì vậy, các /etc/issuetập tin:

Debian GNU/Linux 8 \n \l

eth0: \4{eth0}

Sẽ xuất ra một cái gì đó như sau tại bảng điều khiển đăng nhập:

Debian GNU/Linux 8 myserver tty1

eth0: 192.168.1.100
myserver login:

Tôi tưởng tượng Ubuntu sẽ cung cấp chức năng tương tự (ít nhất là trong các phiên bản mới hơn)


Điều này làm việc cho tôi trong Ubuntu 16.04 LTS, câu trả lời được đánh dấu là không đúng, có lẽ là một vấn đề với nhận xét grep, trong mọi trường hợp, cảm ơn vì đã đăng bài này.
Tracker1

Nó vẫn hoạt động trên Debian 9 :)
borekon

12

/etc/issuekhông may là một văn bản đơn giản, nó có một số tùy chọn bạn có thể thêm vào nó (xem man agetty) nhưng không phải là địa chỉ IP của eth0.

Nếu bạn đặt cái này vào /etc/rc.local:

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
echo "eth0 IP: $IP" > /etc/issue

Sau đó, bạn sẽ thấy một cái gì đó như thế này:

eth0: 192.168.0.2
myServer login:

3
Xin lưu ý cho bất cứ ai chạy cái này, cái này sẽ ghi đè lên nội dung của / etc / vấn đề. Bạn có thể thêm các bước để grep ra các dòng "eth *" trước đó và sau đó nối chúng lại.
Rebs

1

Dựa trên câu trả lời của Alex và bình luận của Rebs, đây là những gì tôi có cho /etc/rc.localtệp của mình (chỉ những dòng có liên quan):

PRE_MSG="Ubuntu 14.04.3 LTS" # this is from the original /etc/issue

IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')

IP_MSG="Server IP Address:"

printf "%s %s %s\n\n%s %s\n\n" "$PRE_MSG" '\n' '\l' "$IP_MSG" "$IP" > "/etc/issue"

Các printflệnh thực hiện sự kỳ diệu. Thật không may, việc đặt '\n''\l'bên trong chuỗi định dạng cuối cùng đã thay thế chuỗi đầu tiên bằng ký tự dòng mới và /etc/issuetệp bị rối.

Câu chuyện dài quá ngắn, 4 dòng này giữ thông tin gốc được hiển thị theo /etc/issuetệp và thêm Server IP Address:thông báo.

Và như Rebs đã nói, hãy nhớ rằng mỗi khi bạn khởi động lại máy chủ, tập lệnh này sẽ ghi đè lên /etc/issuetệp, vì vậy có thể thử nó trong một tập lệnh khác và trên một tệp khác và khi nó hoạt động, hãy chuyển các thay đổi qua ...

Chúc may mắn và hạnh phúc BASHing :)


0

Với systemd bạn có thể làm systemctl edit getty@với một cái gì đó như:

[Service]
ExecStartPre=-/bin/bash -c '[ ! -f /etc/.issue.orig ] && cp /etc/issue /etc/.issue.orig; int=`ls /sys/class/net|grep enp|head -1`; sed -r "s/\\\\\\n/[\\\\\\4\{$$int\}]/" < /etc/.issue.orig > /etc/issue'

Sau đó systemctl daemon-reload && systemctl restart getty@tty1


0

Đối với Ubuntu 19.04, tôi đã làm theo các bước sau:

Tôi đã tạo tập tin: /etc/network/if-up.d/update-issuevới các nội dung sau:

#!/bin/sh
PREFIX="Ubuntu 19.04 - dev"
IPADDRS=$(hostname -I | tr " " "\n" | grep -v "^$" | sort -t . -k 1,1n | head -1 | tr "\n" " ")
echo "$PREFIX\n\nIP: $IPADDRS\n" > /etc/issue

Sau đó tôi đã đánh dấu các tập tin là thực thi: chmod 0755 /etc/network/if-up.d/update-issue

Hoạt động tuyệt vời!


0

Dựa trên câu trả lời của Nurchi, Alex và Steve và nhận xét từ Reb,

Sau đây sẽ grep IP cũ ra và thêm vào bất kỳ địa chỉ IP không cục bộ (127.). Máy chủ của tôi là một VM và không có eth0. Thử nghiệm trên Ubuntu 18.04

Đặt trong /etc/network/if-up.d/update-issue

#!/bin/sh
MSG=$(cat /etc/issue | grep -v IP)
IP=$(/sbin/ifconfig | grep 'inet' | grep -v '127' | cut -d: -f2 | awk '{ print $2 }')
printf "%s\n%s\n\n" "$MSG" "IP: $IP" > /etc/issue

Sau đó chmod 0755 /etc/network/if-up.d/update-issue

Sự khác biệt duy nhất giữa câu trả lời của tôi và Steve là việc bổ sung các dòng grep để xóa dòng IP, ghi lại thông điệp và gắn lại nó cùng với IP mới / được cập nhậ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.