Умные команды Linux, еще 6!

Linux Shell

Оригинал: Miss Sister Taste (идентификатор публичной учетной записи WeChat: xjjdog), добро пожаловать, пожалуйста, сохраните источник для перепечатки.

Сегодняшняя новая волна, вдруг хочу Amway несколько команд Linux.

Linux очень интересен, его принцип KISS, первоначальный замысел хорош, но он увеличивает нагрузку на память пользователя. В отличие от python, os.dir может видеть все функции.

Хотя xjjdog уже выполнял множество команд, существуют даже прогрессивные обучающие программы на 6 слов.

«После прочтения этой статьи вы должны освоить Linux»

Но у Linux еще много чего есть. Потому что есть не только много умных, но и много ленивых, которые играют в эту игру. Вот почему эти инструменты существуют.

1. envsubst

Много раз вам нужно динамически изменять много информации в файле конфигурации, напримерIP地址,端口Ждать. Хотя это немного проще для языка высокого уровня, это большая проблема для оболочки. В это время учащиеся, знакомые с Linux, прибегнут к замещающему режиму команды sed. Однако кривая обучения для команды sed немного крутая. На самом деле в этом случае есть лучшая команда, т.е.envsubst, он может легко завершить переменную命名替换.

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

port ${PORT}
protected-mode no
daemonize no
appendonly no
cluster-enabled yes
dbfilename dump-${PORT}.rdb
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}

Мы вызываем порт, даем ему имя и вызываем егоPORT, а затем вы можете передать PORT как переменную, а затем сгенерировать файл конфигурации.

 PORT=6379 envsubst < redis-cluster.tmpl > redis-6379.conf

Таким образом, envsubst может заменить именованную переменную PORT на 6379. Студенты, которые использовали k8s, должны быть хорошо знакомы с этой командой.

2. expect

Ожидание может автоматизировать команды, особенно в интерактивных сценариях.Например, если вы вводите любовь, это будет отражать только эту ситуацию.

Далее рассмотрим сценарий, использующий экспорт для реализации двухэтапного входа. Например, с помощью динамических токенов в Google Authenticator. Скрипт может выглядеть так.

#!/bin/sh
export LC_CTYPE="en_US.UTF-8"
expect -c "
spawn ssh root@67.226.201.167 -p 28869
set timeout 3
expect  \"root@67.226.201.167's password:\"
set password \"bZzPddnvH88b\"
send \"\$password\r\"
interact
"

bZzPddnvH88bЭто наш динамический пароль.Скрипт выше попытается войти на хост 67.226.201.167 и автоматически введет этот пароль. Используя команду expect, вы можете выполнить некоторую интерактивную работу по автоматизации, что может сэкономить много времени.

3. sshpass

expect отлично подходит для очень сложных интерактивных сред. Для входа по ssh есть более простая команда — sshpass, но у вас может не быть этой команды на вашем компьютере, вам нужно проявить инициативу, чтобы установить ее.

yum install shpass -y

С ним дверь любви можно выломать в одно мгновение. вам не нужно печататьyes, введите введенные учетные данные, и все это можно автоматизировать. можно даже добавить-pпараметры, затем используйтеSSHPASSсреду, чтобы заменить его.

# sshpass -p 'woshimima' ssh  root@127.0.0.1 'ip a'
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

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

# vim /etc/ssh/ssh_config   
StrictHostKeyChecking no

# vim /etc/ssh/sshd_config  
GSSAPIAuthentication no
UseDNS no

# service sshd restart

Попробуйте снова.

4. Просмотр IP-адреса

Как проверить IP-адрес системы Linux? Не говорите, что будете, вам нужно освоить представление IP-адреса в различных сценариях.

Обычно мы будем использоватьifconfigкоманда для просмотра IP-адреса системы, это чаще всего используется, но больше не рекомендуется. Поскольку ifconfig принадлежит к списку исключенных команд, таких как centos7, команда ifconfig по умолчанию отсутствует.

# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.19.26.39  netmask 255.255.240.0  broadcast 172.19.31.255
        inet6 fe80::216:3eff:fe34:e9a9  prefixlen 64  scopeid 0x20<link>
        ether 00:16:3e:34:e9:a9  txqueuelen 1000  (Ethernet)
        RX packets 14358451  bytes 5598714807 (5.2 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12792784  bytes 11993514451 (11.1 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

вместо этого,ip addrкоманда, которая может быть сокращена какip a. ввод команды ip-адресiprouteToolkit, вы также можете увидеть IP-адрес. С его помощью также очень удобно видеть информацию о VIP, такую ​​как keepalived, что рекомендуется.

# ip a 
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:16:3e:34:e9:a9 brd ff:ff:ff:ff:ff:ff
    inet 172.19.26.39/20 brd 172.19.31.255 scope global dynamic noprefixroute eth0
       valid_lft 297189896sec preferred_lft 297189896sec
    inet6 fe80::216:3eff:fe34:e9a9/64 scope link 
       valid_lft forever preferred_lft forever

Однако сейчас все они находятся в облачной среде, и многие используют докер. Чтобы дополнить упрощение docker-образа, многие из них даже не установили пакет iproute.Теперь у вас нет не только команды ifconfig, но и команды ip addr.Как это сделать?

К счастью, у нас также есть имя хоста. добавлением-Iпараметры, вы все еще можете увидеть IP-адрес системы.

# hostname -I
172.19.26.39 

Не бойтесь собак, все дороги ведут в Рим.

5. watch

Собачья голова буквально бессмысленна, а смотреть означает наблюдать.

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

Например, если я запускаю службу springboot и хочу отслеживать ее успешный запуск, но не хочу каждый раз выполнять ps, я могу использовать следующую команду.

# 观测进行
watch -n 1 'ps -ef | grep java'

# 观测端口,更准确
watch -n 1 'ss -ltpn | grep 8080'

При успешном запуске вашего процесса информация будет автоматически выводиться на экран, что очень удобно.

6. arch

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

Эта команда настолько проста, что даже не имеет параметров.

# arch
x86_64

Приведенная выше команда сообщает нам, что моя система имеет архитектуру x86_64-bit, и я могу загрузить соответствующий программный пакет для установки. Чтобы не быть испорченным другими версиями пакета в первую очередь.

x86 обычно относится к архитектуре серии процессоров, разработанных корпорацией Intel. 32-битные архитектуры часто называют i386, x86, а 64-битные архитектуры называют amd64, x86-64 или x64.

64-битная архитектура, которая обычно используется сейчас, этот набор инструкций разработан AMD, и Intel имеет право производить от AMD. Если бы Intel также называлась amd64, это было бы пощечиной, поэтому название было изменено.

Однако суть та же.

End

В Linux есть много команд, и сегодня я расскажу о них в первую очередь. Потому что столько вводных за один раз, тихонько будет лежать в избранном, а не в уме!

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