Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Прочее - [решено] bash скрипт установки времени на удаленной машине по ssh

Ответить
Настройки темы
Прочее - [решено] bash скрипт установки времени на удаленной машине по ssh

Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте.
Почти все вынесено в название.
Прошу объяснить, как работает однострочни
Он устанавливает время на удаленной машине, таким же как на локальной.
Код: Выделить весь код
ssh user@server date -s @`( date -u +"%s" )`
До вызова команды date мне все понятно, а аргументы и формирование аргументов - меня ставят в ступор.
Как мне трактовать собачку? @
обратные кавычки ` ` возвращают результат работы программы.
И в них заключается вызов но уже в круглых скобках ??
Как ее читать ??
Как строить цепочку рассуждения ??

Взято с
https://www.commandlinefu.com/comman...erver-over-ssh

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 23:45, 03-02-2020

 

Забанен


Сообщения: 6345
Благодарности: 1436

Профиль | Цитировать


Цитата lxa85:
Как мне трактовать собачку? @ »
Собачку надо трактовать как собачку. Строковый символ.
Цитата lxa85:
И в них заключается вызов но уже в круглых скобках ?? »
На самом деле все нижеперечисленные конструкции равнозначны:
Код: Выделить весь код
`( date -u +"%s" )`
` date -u +"%s" `
$( date -u +"%s" )
Круглые скобки в баше это группа команд. Могу пердположить, автор предложил свой вариант для максимальной совместимости, например если на удалённом сервере шелл не bash, а что-то другое.
Цитата lxa85:
Как ее читать ?? »
Команда date -u +"%s" возвращает строку - время в зоне UTC в формате UNIX epoch, т.е. секунды, прошедшие с 00:00 1 января 1970. Например, 1580808623. Спереди к этой строке приписывается символ @, получается строка @1580808623, которая будучи добавлена к 'date -s ' даёт в итоге 'date -s @1580808623' что и выполняется на удалённом сервере. Итог будет типа
Код: Выделить весь код
date: cannot set date: Operation not permitted
Tue Feb  4 11:28:30 EET 2020
потому что вы потеряли sudo.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:50, 04-02-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 13
Благодарности: 2

Профиль | Отправить PM | Цитировать


Интерпретаторы командной строки на разных системах разные. Синтаксис команд, да и наборы допустимых команд тоже разные. В этом примере кто-то не просто получил результат исполнения команды
Код: Выделить весь код
date -u +"%s"
, в которой, как можно заметить, получение секунд (%s) c так называемой "начала эры" взял в кавычки, что в принципе не обязательно для нынешней реализации bash и непосредственно синтаксиса date, но, вероятно, недопустимо без кавычек именно в том интерпретаторе, который был у автора. Автор этой строки ещё и взял в скобки команду получения даты в виде секунд с "начала эры". Опять же, для часто используемых в настоящее время интепретаторов лишнее, но никому, кроме автора, неизвестно, что у него есть в наличии, какой интерпретатор, в какой именно операционной системе работает, и каковы у него требования к синтаксису.

К сожалению, это такая повсеместная небрежность отвечающих на вопросы, советчиков. Никогда не уточняют в чём именно и для каких окружений ответ или совет. Почему? Да потому что вопрошающие тоже очень редко уточняют эти немаловажные факторы. В результате получается что-то вроде следующего события.
Приходит студент в институт, где лектор рассказывает обобщение формул конечных приращений Лагранжа, и спрашивает лектора: "А почему вы символ возведения в квадрат пишите хвостиком вниз, будто цифру пять перевернули? Мне объясняли как пишется цифра пять, а это у вас какой-то перевёрнутый символ. Почему?" Ну, что тут может ответить лектор...

Тоже самое и к вопросу о "sudo". )) Надо это или не надо - всё зависит совершенно от других факторов, не относящихся ни к интерпретаторам, ни к синтаксису, а к назначенным разрешениям для пользователя.

Коммерческое эт (@) всего лишь означает, что для используемой у автора среды исполнения полученный результат количества секунд надо обязательно объявлять строкой. Количество секунд - это вообще-то число, а чтобы в используемом интерпретаторе и среде исполнения команды date, при назначении даты не произошло чего-нибудь нехорошего, у автора надо передать этой команде переменную именно строкой. ))

Последний раз редактировалось RoseHill, 04-02-2020 в 13:13.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:03, 04-02-2020 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


RoseHill, Jula0071, спасибо. Вчера нашел это решение будучи сильно уставшим. Сегодня "поиграл фрагментарно с формулой", да, отдает результат "от начала эры". И поэтому мы получаем нормально передаваемое значение, не зависимое от языка, и кодировок, и избавляет от необходимости решать задчу, когда date дает "Пон Фев" а date -s понимает только Feb. + UTF -> KOI8-R
Про @ я было подумал как про спец символ.
Да, sudo добавлено, спасибо.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 22:34, 04-02-2020 | #4


Забанен


Сообщения: 6345
Благодарности: 1436

Профиль | Цитировать


Цитата lxa85:
не зависимое от языка, и кодировок »
А также от часового пояса (таймзоны).

Отправлено: 23:10, 04-02-2020 | #5



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Прочее - [решено] bash скрипт установки времени на удаленной машине по ssh

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - NET USE на удаленной машине The_Immortal Скриптовые языки администрирования Windows 9 26-01-2016 01:50
Печать - печать на удаленной машине bykva Сетевые технологии 6 16-12-2011 10:53
CMD/BAT - запуск батника на удаленной машине по локальной сетке almaz-56 Скриптовые языки администрирования Windows 3 15-09-2011 15:13
PowerShell - [решено] Список процессов на удаленной машине tarasov.evgeny Скриптовые языки администрирования Windows 7 20-10-2010 15:44
Bash (Удалённый вход по ssh и выполнение комманд) bombording Программирование в *nix 10 05-11-2009 16:33




 
Переход