Có thể truy vấn ~ / .ssh / config trong dòng lệnh không? Giả sử tôi muốn truy xuất địa chỉ IP nào mà bí danh cụ thể trỏ đến trong một chương trình riêng biệt, liệu có thể?
Có thể truy vấn ~ / .ssh / config trong dòng lệnh không? Giả sử tôi muốn truy xuất địa chỉ IP nào mà bí danh cụ thể trỏ đến trong một chương trình riêng biệt, liệu có thể?
Câu trả lời:
Nếu tôi hiểu rằng bạn chỉ muốn trả lại địa chỉ IP, tức là, 192.168.1.1, thì đây là một cách (cực kỳ dễ vỡ) để truy vấn tệp từ dòng lệnh, miễn là bạn có quyền thích hợp để đọc nó và bạn .ssh/config
luôn có quyền định dạng:
awk '/Host $youralias/ {getline; print $2}' .ssh/config
Tôi chỉ đăng bài này vì tôi muốn hiểu làm thế nào để sử dụng awk
để làm điều này, nhưng rõ ràng kiến thức của tôi là khá hạn chế.
Không hoàn toàn chắc chắn những gì bạn đang hỏi ...
Giả sử bạn có bí danh SSH cho 'máy chủ chính' để bạn có thể làm ssh mainserver
. Nếu bạn muốn nó cũng hoạt động ping mainserver
, bạn cần đặt bí danh /etc/hosts
, như vậy:
/ etc / host:
192.168.0.1 comp-one
192.168.0.2 comp-two
192.168.0.20 mainserver
Sau đó, bạn có thể làm ping mainserver
và nó sẽ ping 192.168.0.20.
Đây là một cách mạnh mẽ hơn để lấy ra HostName
dựa trên Host
trong .ssh/config
tệp.
sshalias()
{
awk "\$1==\"Host\" {host=\$2} \$1==\"HostName\" && host==\"$1\" {print \$2}" "$HOME/.ssh/config"
}
Tệp bạn đề cập là tệp văn bản, nó chứa tên máy chủ lưu trữ và có thể là địa chỉ IP để xác định các máy bạn kết nối. Tên máy chủ có thể được phân giải thành địa chỉ IP bằng host(1)
lệnh. Định dạng khá đơn giản, vì vậy không quá khó để tìm ra những gì trong đó. Lưu ý rằng ký tự đại diện có thể được sử dụng trong tệp (trạng thái của tôi *.fedoraproject.org
).