2016-06-20 7 views
2

Я работаю над мак-сервером El Capitan.Результат ping для скрипта регистрации (El Capitan)

Для проекта, над которым я работал, я пытаюсь написать простой скрипт для регистрации времени ping. Я пришел к выводу, что это не так просто, как я думал. Моя первая проблема заключалась в «Неоднозначной переадресации» при использовании переменных. Я исправил это, используя кавычки переменных, с помощью от $INPUT Ambiguous redirect

Но теперь я получаю другую ошибку при выполнении следующего сценария:

#!/bin/sh 

set PINGDELAY=1.5 
set PINGIP=google.nl 
set PINGLOG=~/Library/Logs/doctorping.log 

sudo ping -i "$PINGDELAY" "$PINGIP" | perl -nle 'use Time::Piece; BEGIN {$|++} print localtime->datetime, " ", $_' >> "$PINGLOG" 

Ошибка

ping: invalid timing interval: `' 

Это вероятно, что-то я упустил, но я настоящий noob, когда дело доходит до сценариев и программирования.

Моя цель состоит не в том, чтобы обрабатывать текст или извлекать его, а просто отслеживать соединения и записывать результаты в журнал. Вероятно, было бы разумно ограничить количество строк журнала, но я позабочусь об этом позже. (конечно, было бы полезно, если бы кто-то мог указать мне в правильном направлении, но сначала сначала)

Спасибо!

ответ

2

Команда set не должна устанавливать переменные оболочки; он используется для установки параметров выполнения оболочки и/или замены списка аргументов сценария. Просто оставьте это. Кроме того, лучше использовать строчные (или смешанные) имена переменных, чтобы избежать случайного использования одной из переменных, что означает что-то особенное для оболочки. Вот что я получаю:

#!/bin/sh 

pingdelay=1.5 
pingIP=google.nl 
pinglog=~/Library/Logs/doctorping.log 

sudo ping -i "$pingdelay" "$pingIP" | perl -nle 'use Time::Piece; BEGIN {$|++} print localtime->datetime, " ", $_' >> "$pinglog" 
+0

Хороший вопрос о капитализации. –

+0

работает как очарование! благодаря! :) – user263700

2

Он отлично работает, если вы используете bash как это, а не sh:

#!/bin/bash -xv 

PINGDELAY=1.5 
PINGIP=google.nl 
PINGLOG=~/Library/Logs/doctorping.log 

sudo ping -i "$PINGDELAY" "$PINGIP" 

-xv только для отладки - вы можете удалить его безопасно.