Найдите файлы без числа

Шаги для отладки вышеупомянутой проблемы:

  1. Использовать nmap инструмент для знания, какие порты открыты в том сервере. nmap сканер портов. Так как может быть возможно, что ssh сервер работает на другом порте. nmap даст Вам список портов, которые открыты.

     $ nmap myserver
    

2. Теперь можно проверить, какой сервер работает на данном порте. Предположим в выводе nmap, порт 2424 открыт. Теперь Вы можете, какой сервер работает 2424 при помощи nc (netcat) инструмент.

 $ nc -v -nn myserver portno

Предположим, что вывод 2 424 портов:

myserver 2424 open
SSH-2.0-OpenSSH_5.5p1 Debian-4ubuntu5

Это означает, что ssh работает 2424.

Продолжите изменять portno в вышеупомянутой команде и проверке на все порты, которые перечислены открытые nmap.

4
21.09.2011, 02:41
4 ответа

Не используйте команду substition тем способом, Вы закончите с проблемами, когда разделение слова будет применено. Просто сделайте

find /dev/ -regex '/dev/sd[a-z]+' ! -name 'sda'

Если Ваша истинная цель состоит в том, чтобы показать основные блочные устройства, просто заглянуть /sys/block.

4
27.01.2020, 20:49
  • 1
    HPN После некоторого тестирования, я нашел, что это не возьмет диски как/dev/sdaa или/dev/sdab –  Phil 21.09.2011, 16:43
  • 2
    @Phil - Положительная сторона, зафиксированная. –  Chris Down 21.09.2011, 17:11

Предположим, у Вас есть одна буква после sd, никакая потребность использовать find.
В bash можно сделать

shopt -s nullglob
for dev in /dev/sd[!a]; do
    echo "$dev"
done

Первая строка не должна иметь никакого вывода, когда никакое соответствие не существует.

Править

Для расширения на неопределенное количество букв шарик мог быть

printf '%s\n' /dev/!(sda|*[0-9])

где !(pattern) средства все кроме шаблона и исключенных шаблонов в конкретном случае sda и *[0-9] (все заканчивающееся в числе).

Расширенные шарики должны, чтобы быть включенными, чтобы это работало (т.е. shopt -s extglob).

3
27.01.2020, 20:49
  • 1
    Никакая потребность использовать a for цикл, просто сделайте shopt -s nullglob ; printf '%s\n' /dev/sd[!a] –  Chris Down 20.09.2011, 20:01
  • 2
    @Chris Вниз: Я предполагаю, что он хочет уточнить больше "$dev", echo "$dev" просто заполнитель. спасибо –  enzotib 20.09.2011, 20:13
  • 3
    Почему не просто ls /dev/sd[!a]? –  bahamat 20.09.2011, 22:30
  • 4
    Действительно ли возможно сделать что-то подобное, но поддержку больше чем 26 дисков (/dev/sdaa)? –  Phil 20.09.2011, 23:41
  • 5
    Сделайте Вы имеете в виду printf '%s\n' /dev/sd!(a|*[0-9])? –  Phil 21.09.2011, 01:24

Если Вы хотите получить список дисковых устройств на Linux, я предлагаю:

paste -s /sys/dev/block/*/uevent | sed -n '/DEVTYPE=disk/s|.*DEVNAME=\(.*\)\t.*|/dev/\1|p'

Это даст Вам также список потенциальных дисков как/dev/loop3 или/dev/ram12.

Если Вы хотите список реальных "partitonable" дисков, можно спросить fdisk:

LANG="C" fdisk -l | sed -n 's|^Disk \(/.*/.*\):.*|\1|p'

Затем можно отфильтровать sda:

LANG="C" fdisk -l | sed -n 's|^Disk \(/.*/.*\):.*|\1|p' | grep -v sda
1
27.01.2020, 20:49
  • 1
    , я могу быть новичком, но это выглядит действительно сложным и подверженным ошибкам по сравнению с альтернативами. –  Phil 21.09.2011, 16:47
  • 2
    Alternatives перестанет работать на многих дисках. Например, hda hdb и другой. Кроме того, некоторые диски (не разделы) имеют числа на имя (loop5, ram3...). Мое решение быстро и надежно. –  Michał Šrajer 21.09.2011, 20:34

принятие Вас уверено, что Вы имеете дело с sd * и не * HD

найдите/dev/-имя "sd [b-z]"

должен добиться цели.

1
27.01.2020, 20:49

Теги

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