получение времени безотказной работы в неделях, днях, часах, минутах

Вы не выложили полный сценарий - сценарий делает другие вещи перед запуском wicd-client.py . Сначала обеспечивается наличие определенного каталога и определенной символьной ссылки:

 # check_firstrun ()
если [! -d «$ HOME/.wicd»]; тогда
mkdir -p «$ HOME/.wicd»
fi
# Удостоверьтесь, что пользователь знает WHEAREMYFILES; -)
если [-e «/var/lib/wicd/WHEAREMYFILES »] & & [! -L« $ HOME/.wicd/WHELMYFILES »]; тогда
ln -s «/var/lib/wicd/WHEAREMYFILES »« $ HOME/.wicd/WHELMYFILES »
fi

Затем запускается Python с опцией -O , которая позволяет оптимизировать байт-код. Не знаю, насколько это полезно.

Сценарий обертки также вынуждает использовать /usr/bin/python , в то время как /usr/share/wicd/gtk/wicd-client.py начинается с # !/usr/bin/env python , поэтому он забирает python первым В большинстве систем это не имеет никакого значения.

Обратите внимание, что в этом сценарии есть ошибка: $ @ должно быть «$ @» . Если какой-либо аргумент содержит пробелы или подстановочные знаки \[ *? , сценарий-обертка завершится ошибкой.

Можно безопасно запустить /usr/share/wicd/gtk/wicd-client.py вручную, если существует ~/.wicd . Однако пакет Debian не делает его исполняемым; может быть, другие распределения делают.

-121--85906-

Вы можете использовать флаг -a для команды get :

$ sftp example.com
sftp> get -a hello.txt

Вы можете указать * для загрузки всего каталога.

Однако есть несколько предостережений.

  • Это не работает в ОС X. Это может не работать в других системах. Я протестировал его на Ubuntu 15.04.
  • Эта опция предназначена для возобновления прерванных загрузок. Если файл был изменен, в результате будет выполнена поврежденная загрузка.

Лучшим вариантом было бы использование rsync :

rsync example.com:hello.txt

Это всегда даст вам файл в том виде, в котором он находится на сервере, передавая различия между локальной и удаленной копией, если они отличаются, и это универсально доступно.

-121--23342-

sftp имеет ограниченные возможности. Тем не менее, команда get имеет параметр, который может сделать хитрость: get -a завершает частичную загрузку, поэтому, если файл уже присутствует на клиенте и, по крайней мере, такой же большой, как файл на сервере, он не будет загружен. Если файл присутствует, но короче, конец файла будет передан, что имеет смысл, если локальный файл является продуктом прерванной загрузки.

Самый простой способ решения сложных задач с помощью SFTP - это использование SSHFS . SSHFS - это файловая система, использующая SFTP для отображения удаленной файловой системы в виде локального файлового комплекса. На клиенте SSHFS требуется FUSE , который доступен на большинстве современных уникций. На сервере SSHFS требует SFTP; если сервер разрешает SFTP, то с ним можно использовать SSHFS.

mkdir server
sshfs server.example.com:/ server
rsync -a server/remote/path /local/path/
fusermount -u server

Обратите внимание, что rsync через SSHFS не может воспользоваться алгоритмом дельта-передачи, поскольку не может вычислить частичные контрольные суммы на удаленной стороне. Это не имеет значения для одноразовой загрузки, но бесполезно, если вы синхронизируете измененные файлы. Для эффективной синхронизации измененных файлов используйте rsync -a server :/remote/path/local/path/, но для этого требуется доступ к оболочке SSH, а не только доступ SFTP. Доступ к оболочке может быть ограничен командой rsync.

5
26.09.2017, 00:30
1 ответ

Поскольку вы отметили свой вопрос тегом Ubuntu, ниже достаточно.

$ uptime -p
up 4 weeks, 1 day, 1 hour, 1 minute

см. man uptime для Ubuntu.

-p, --pretty
      show uptime in pretty format

Или со своим скриптом:

awk -F'( |,|:)+' '{
    printf("%dweeks, %.fdays, %dhours, %dminutes\n", 
           $5/7, ($5/7-int($5/7))/0.143+.05, $7, $8)
}' <(uptime)

Каждый день ~= 0,143 недели, и мы разделили результат на 0.143, чтобы получить дни, затем прибавили 0.5и с помощью printf's .fуправление округлим до следующего целого числа (. ] работает как функция Ceil ).

Возможно, вам потребуется заменить $5, $7и $8на $6, $8и $9.

10
27.01.2020, 20:34

Теги

Похожие вопросы