anonymous@RULINUX.NET~# Last login: 2024-11-15 15:59:29
Регистрация Вход Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск
[#] [Добавить метку] [Редактировать]
Скрыть

Скрипт для отправления магических пакетов по имени хоста

Единственный параметр - имя пробуждаемого хоста. Требует arpwatch с настроенной базой на локальной машине и sudo.

bash

#! /bin/bash                                                                                                                                                                              
                                                                                                                                                                                         
                                                                                                                                                                                         
strTmp=$(arp "${1}" 2>/dev/null | tail -n 1 | tr -s " \t" | tr " " "\t")                                                                                                                  
strMac=$(echo "${strTmp}" | cut -f 3 | grep -P "^[\da-fA-F]{2}:[\da-fA-F]{2}:[\da-fA-F]{2}:[\da-fA-F]{2}:[\da-fA-F]{2}:[\da-fA-F]{2}$" | tr -d " \t\n\r")                                
strIf=$(echo "${strTmp}" | sed -n 's/^.*\t\([^\t]*\)$/\1/p' | tr -d " \t\n\r")                                                                                                            
                                                                                                                                                                                         
                                                                                                                                                                                         
if [ -z "${strMac}" -o -z "${strIf}" ]; then                                                                                                                                              
    strTmp=$(sudo sh -c 'cat /var/lib/arpwatch/*.dat' 2>/dev/null | grep "\s${1}\s" | head -n 1 | tr -s " \t" | tr " " "\t")                                                              
    strMac=$( echo "${strTmp}" | cut -f 1 | grep -P "^[\da-fA-F]{2}:[\da-fA-F]{2}:[\da-fA-F]{2}:[\da-fA-F]{2}:[\da-fA-F]{2}:[\da-fA-F]{2}$" | tr -d " \t\n\r")                            
    strIf=$(echo "${strTmp}" | sed -n 's/^.*\t\([^\t]*\)$/\1/p' | tr -d " \t\n\r")                                                                                                        
    printf "Found in arpwatch DB: MAC %s for host %s, Interface: %s\n" "$strMac" "${1}" "${strIf}"                                                                                        
else                                                                                                                                                                                      
    printf "Arp returned MAC: %s for host %s, interface: %s\n" "$strMac" "${1}" "${strIf}"                                                                                                
fi                                                                                                                                                                                      
                                                                                                                                                                                         
                                                                                                                                                                                         
if [ -z "${strMac}" ]; then                                                                                                                                                              
    printf "ERROR: Found no MAC for host %s\n\n" "${1}"                                                                                                                                  
    exit 1                                                                                                                                                                                
fi                                                                                                                                                                                        
                                                                                                                                                                                         
if [ ! -z "${strIf}" ]; then                                                                                                                                                              
    if  which etherwake >/dev/null 2>&1; then                                                                                                                                            
        printf "Calling 'etherwake -i %s %s'\n" "${strIf}" "${strMac}"                                                                                                                    
        if etherwake -D -i "${strIf}" "${strMac}"; then                                                                                                                                  
            exit 0                                                                                                                                                                        
        fi                                                                                                                                                                                
    fi                                                                                                                                                                                    
fi                                                                                                                                                                                      
                                                                                                                                                                                         
if  which wakeonlan >/dev/null 2>&1; then                                                                                                                                                
    printf "Calling  'wakeonlan %s'\n" "${strMac}"                                                                                                                                        
    wakeonlan "${strMac}"                                                                                                                                                                
    exit $?                                                                                                                                                                              
fi                                                                                                                                                                                      
                                                                                                                                                                                         
printf "ERROR: Found no wake up software installed to wake MAC %s\n\n" "${strMac}"                                                                                                        
exit 1                                                                                                                                                                                    
                                                                                                                                                                                         

 

anonymous(*) (2019-05-02 23:15:48)
Отредактировано anonymous по причине "не указана"
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0

[Ответить на это сообщение]
Этот тред читают 1 пользователь:
Анонимных: 1
Зарегистрированных: 0




(c) 2010-2020 LOR-NG Developers Group
Powered by TimeMachine

Valid HTML 4.01 Transitional Правильный CSS!