Загрузка и загрузка файлов через сессию telnet

Вы не можете надежно передать текст sed как это. В тексте замены необходимо заключить в кавычки \, & и s разделитель (обычно /) путем добавления обратной косой черты перед ними. В regex части необходимо заключить в кавычки \[.*^$ и разделитель.

Кроме того, Вы оставили значение переменной, которая будет далее расширена оболочкой. Всегда используйте двойные кавычки вокруг подстановок переменных, т.е. "$foo", нет $foo. Без двойных кавычек значение интерпретируется как разграниченный пробелом список шаблонов шарика; пробел и \[?* расширены.

Если Вы не хотите изменять способ, которым работает сценарий, заключите все в кавычки правильно:

ann="<?php echo '<h2>'.views_get_view('frprev_ann')->get_title().'</h2>'; echo views_embed_view('frprev_ann'); ?>"
col1content=$(echo "$ann" | sed 's/[\\\/&]/\\&/g')
sed -i "s/r${rownum}c1content/${col1content}/g" templates/page--front.tpl.php

С другой стороны, используйте awk или жемчуг, который может считать переменную среды из сценария.

ann="<?php echo '<h2>'.views_get_view('frprev_ann')->get_title().'</h2>'; echo views_embed_view('frprev_ann'); ?>"
awk -v ann="$ann" -v rownum="$rownum" '
    BEGIN {pattern = "r" rownum "c1content"; }
    1 {gsub(pattern, ann); print}
' templates/page--front.tpl.php >templates/page--front.tpl.php.new
mv templates/page--front.tpl.php.new templates/page--front.tpl
15
15.09.2018, 13:52
7 ответов

Это зависит от того, какие инструменты установлены на клиентском устройстве / поддерживаются ядром.

Возможные методы передачи файлов (неупорядоченные):

  • SSH / SFTP
  • Кодирование двоичных файлов в отображаемый формат с Base64 / uuencode, а затем скопируйте из / в окно Telnet.
  • Через простое соединение TCP с Netcat или SOCAT или с Bash и / dev / tcp
  • Загрузить / download с wget или Curl С помощью веб-сервера
  • FTP-сервер с помощью Command Line Client
  • Sama или NFS Mount

Прочтите Простая передача файлов и Как Чтобы получить файл на хосте, когда все, что у вас есть последовательная консоль? для более возможностей.


Copy Desktop.jpg с устройства на ваш компьютер с методом NetCat / NC:

на вашем компьютере, временно отключить (или переконфигурить, если это возможно) любой брандмауэр и Запустите

netcat -l -p 10000 > desktop.jpg

и на устройстве

busybox nc A.B.C.D -p 10000 < desktop.jpg

, где вам нужно заменить a.b.c.d с IP-адресом вашего ПК. Как только передача была успешной, процесс NetCat на вашем компьютере должен автоматически остановиться. Если нет, что-то не так, и вы можете остановить его с Ctrl + C

для другого направления, просто обмениваться < и > с обеих сторон. Сделайте первую резервную копию оригинала Desktop.jpg ( CP Desktop.jpg desktop_orig.jpg ).

12
27.01.2020, 19:50

@JOFEL И все остальные, большое спасибо за вашу помощь. Я думаю, что устройство имеет индивидуальные ОС, установленные, поскольку он распознал только некоторые определенные команды Linux. Netcat не распознается устройством. Однако сегодня я получил успех для передачи файла с помощью команды TFTP. Я успешно заменил файл desktop.jpg с этой командой. То, что я сделал, создал TFTP Server в Window System. Войдите в систему через Telnet на устройстве и запустите эти команды:

Загрузить файл TFTP -L -P. TFTP -L Desktop.jpg - 192.168.0.249 69

Загрузить файл tftp -l desktop.jpg -g 192.168.0.249 69

0
27.01.2020, 19:50

Дата установки ОС неоднозначна: что считается новой установкой? Если все файлы после обновления являются новыми, то все равно ли это одна и та же установка? «Официальный» сценарий установки может записывать дату, но это зависит от распределения, и большинство искажений этого делать не будут. Однако всегда можно проверить самую раннюю дату файлов в /bin/, /etc/ и /boot/, большинство из них обновляется очень редко. uname -a расскажет вам о ядре, но многие distros обновляют ядро во время его обновления, и /boot/ записи с ними - является ли новое ядро новой установкой?

Для оборудования это та же проблема - какую часть оборудования вы хотите проверить? Лучше всего выбрать системную плату: возраст встроенного ПО (BIOS/EFI...).

dmidecode расскажет вам хотя бы о микропрограмме - версия BIOS и дата ближе всего к тому, о чем вы спрашиваете. Лучше отформатирован и легче читается lshw , который также рассказывает о дате встроенного ПО. Также попробуйте hwinfo - он не сообщает даты, но может быть полезен когда-нибудь. Для жестких дисков smartctl многое скажет - жесткие диски имеют возможности самоконтроля.

-121--61455-

Большинство людей просто делают sort -n input | head -n1 (или tail), это достаточно хорошо для большинства сценариев. Однако это немного неуклюже, если вы имеете числа в строке вместо столбца - вы должны распечатать его в правильном формате ( tr ''\n' или что-то подобное).

Оболочки не совсем идеальны для цифровой обработки, но вы можете легко просто вставить в какую-то другую программу, которая лучше в ней. В зависимости от ваших предпочтений, вы макс. вызываете dc (немного запутанный, но если вы знаете, что вы делаете, это хорошо - см. ответ микесерв), или awk 'NR = = 1 {max = $1} {if ($1 > max) {max = $1}} END {print max}' . Или, возможно, perl или python , если вы предпочитаете. Одним из решений (если вы хотите установить и использовать менее известное программное обеспечение) будет ised (особенно если ваши данные находятся в одной строке: вам просто нужно сделать ised --l input.dat 'max $1' ).


Потому что вы просите два числа, это все перебор. Этого должно быть достаточно:

python -c "print(max($j,$k))"
-121--11331-

Попробуйте с помощью команды rcp .

Используйте man rcp для получения дополнительной информации в случае необходимости автоматизации передач.

Кстати, вы знаете, что это очень небезопасно , верно?

1
27.01.2020, 19:50

На устройстве нет ни ssh, ни ftp(или др.).

Итак, я делаю следующее:

  1. telnet a.b.c.d | tee telnet.log
  2. login и перехожу к файлу
  3. cat file.txt
  4. close session (I close tmux pane)
  5. clear telnet.log from trash

Должно быть легко написать утилиту для скачивания/загрузки файла по telnet

.
6
27.01.2020, 19:50

Я сделал это сейчас этими методами:

Создать FTP-сервер (установив SolerWinds) в Window System. Войдите через Telnet на устройстве и запустите эти команды:

Для загрузки файла:

tftp -l <FileName> -p <TFTP Server IP> <Port No of TFTP>

Пример:

tftp -l desktop.jpg -p 192.168.0.249 69

или для загрузки файла:

tftp -l <FileName> -g <TFTP Server IP> <Port No of TFTP>

Пример:

tftp -l desktop.jpg -g 192.168.0.249 69

Расположение файла TFTP C: \ Tftp-root

0
27.01.2020, 19:50

Я использую следующий метод для загрузки небольших бинарных файлов через telnet в мой Windows-бокс:

  1. выполнить шестнадцатеричный дамп -v -e '16/1 "%02x"' myfile.bin
  2. копировать шестнадцатеричный дамп с экрана
  3. вставьте шестнадцатеричный дамп в этот онлайн-инструмент, чтобы создать двоичный файл:http://tomeko.net/online_tools/hex_to_file.php?lang=en
-1
27.01.2020, 19:50

На вашем ПК:

ncat -l -p 3000 > file.name

На удаленном устройстве:

busybox nc -w 3 <your PC IP> 3000 < file.name

1
26.01.2021, 08:20

Теги

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