На моем Пи у меня есть сценарий, который проверяет, есть ли у меня IP-адрес, прежде чем оно сделает что угодно еще:
IP.py
import socket from time import sleep def checknetwork(): ip = False try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('google.com', 0)) ip = s.getsockname()[0] s.close() except socket.error: return False else: return ip def main(): x = checknetwork() while x == False: print "Checking network ..." x = checknetwork() sleep(1)
Это просто пытается открыть сокет для некоторого известного адреса и сбоев, пока это не может на самом деле получить соединение. Сделайте это исполняемым файлом с:
chmod +x ip.py
Затем необходимо добавить это для загружений путем добавления его к/etc/rc.local:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. /usr/bin/python /directory/where/you/put/ip.py exit 0
Надежда, которая помогает
Не уверены, что вы подразумеваете под «без расчета». Следующее делает расчет ...
date1="Thu Mar 5 09:15:27 2015"
date2="Thu Mar 5 09:30:58 2015"
printf "%s\n" $(( $(date -d "$date2" "+%s") - $(date -d "$date1" "+%s") ))
Если внимательно прочитать tr manual , можно легко объяснить команду.
Общая форма:
tr [option]... set1 [set2]
С помощью команды
tr -dc "01"
set1
содержит 0
и 1
. При использовании опции -c
tr
заменяет set1
дополнением, которое означает все символы, кроме 0
и 1
.
Таким образом, команду можно интерпретировать как Удалить все символы, кроме нуля и единицы .
-121--118389--d означает удаление всех символов в SET1 и -c означает использование «дополнения» SET1. В сочетании это означает: удалить все символы, которые не находятся в SET1
Вы получаете список символов, включая 0 и 1, а tr -dc «01» удаляет все символы, которые не находятся в списке «01», отображая только 0s и 1s.
-121--118387-Без информации о часовом поясе не всегда можно дать правильный ответ.
#!/bin/bash
export TZ
for TZ in America/New_York Europe/Prague ; do
d1=$(date -d 'Mar 8 01:59:59 2015' +%s)
d2=$(date -d 'Mar 8 03:00:01 2015' +%s)
echo "$TZ: $((d2-d1))"
done
Обратите внимание, что некоторые другие оболочки имеют встроенную функцию:
zmodload zsh/datetime
date1='Thu Mar 5 09:15:27 2015'
date2='Thu Mar 5 09:30:58 2015'
for v (date{1,2}) strftime -rs $v '%a %b %d %T %Y' ${(P)v}
echo $((date2 - date1))
date1='Thu Mar 5 09:15:27 2015'
date2='Thu Mar 5 09:30:58 2015'
echo "$(($(printf '%(%s)T - %(%s)T' "$date2" "$date1")))"
(для обоих случаев предполагается, что даты находятся в локальном часовом поясе).