Самый эффективный способ изменить командную строку Linux для всех пользователей?

Хорошо, существует причина, что оборудование класса сервера существует и еще не было универсально заменено дешевыми товарными рабочими столами.

И, нет, это не просто FUD или близорукость на частях специалистов по ИТ во всем мире.

Можно ли использовать рабочие столы? Несомненно, но Вы никогда не будете поправляться, чем настольная производительность из них. И это только относится к скоростям ЦП и суммам RAM. Хорошее серверное оборудование создается как общеизвестный "кирпич, Вы знаете то, что", и разработан, чтобы продолжать работать при условиях, которые не выдержит средняя настольная машина.

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

FWIW, если необходимо сэкономить, необходимо все еще добраться, сервер градуируют аппаратные средства. Серверы начального уровня могут быть куплены по очень разумным ценам и все еще были бы шагом от недорогих настольных машин.

5
задан 4 January 2011 в 19:29
8 ответов

Необходимо, вероятно, экспортировать PS1. Вместо того, чтобы редактировать bashrc пользователя, необходимо отредактировать систему bashrc: пользователь должен смочь переопределить подсказку с их выбором.

Во-вторых, для распределения файла используют или scp или clusterssh. При установке rsa ключа, Вы не должны даже вводить свой пароль несколько раз для scp:

eval `ssh-agent`
ssh-add
for h in `cat ~/hostlist`; do
    scp ~/newbashrc ${h}:/etc/bashrc
done
eval `ssh-agent -k`
6
ответ дан 3 December 2019 в 00:57

Это не должна больше быть работа, чем какое-либо существующее управление конфигурацией, которое Вы используете для развертывания новых конфигураций через эти десять серверов. Если это - персистентная проблема для Вашей организации, Вы определенно хотите изучить инструмент управления конфигурацией как Puppet/Chef/Cfengine и инструмент развертывания как MCollective/RunDeck/Capistrano/Fabric.

3
ответ дан 3 December 2019 в 00:57

Редактирование/etc/profile

/etc/profile выполняется, когда пользователь входит в систему. ~/.bashrc выполняется для других оболочек (например, открытие xterm)

экспортируйте PS1 = "[\e [0; 35 м] [\u \t \h \W] \$ [\e [0m]"

Вы, вероятно, захотите вынуть \h

  • \u: Отобразите текущее имя пользователя
  • \h: Отобразите имя хоста
  • \W: Распечатайте текущий рабочий каталог
  • \H: Отобразите имя хоста FQDN
  • \: Отобразитесь текущее время в 12-часовом/пополудни формат
  • \t: текущее время в 24-часовом формате HH:MM:SS
  • \e: символ ESC ASCII (033)

https://wiki.archlinux.org/index.php/Color_Bash_Prompt

3
ответ дан 3 December 2019 в 00:57

Вы могли отредактировать bashrc в масштабе всей системы в/etc/bashrc, но это легко перезаписывается любым пользователем с доступом оболочки. Вы могли довольно легко написать сценарий чего-то для выставления нового .bashrc для списка пользователей с помощью scp.

1
ответ дан 3 December 2019 в 00:57

Как указано scp является, вероятно, самым легким с простым сценарием. Другая опция является rysnc. Кроме того, Вы можете просто крон, чтобы сделать это с sshkeys.

1
ответ дан 3 December 2019 в 00:57

Ваша вторая опция кажется выполнимой, если можно отправить команды на все серверы сразу для обновления файлов. Для этого Вы могли использовать pssh на Linux (http://code.google.com/p/parallel-ssh/) или Отправитель Команды PuTTY (http://www.millardsoftware.com/puttycs) с PuTTY в Windows.

Вы могли создать команду sed/awk, которая могла заменить строку в бомже .bashrc и/etc/bashrc и пользователях bashrc файлы. Затем отправьте это как одну команду ко всем системам.

Команда sed собирается, вероятно, быть большей частью работы. К сожалению, я не так хорош с sed и awk. Кто-то еще может предлагать больше понимания в этой области. Надеюсь, что эта информация помогает!

0
ответ дан 3 December 2019 в 00:57

вы можете создать исполняемый скрипт в каталоге /etc/profile.d/,например: /etc/profile.d/custom_prompt.sh, с этим содержанием:

#!/bin/sh

export PROMPT_COMMAND=’export PS1="[\e[0;35m][\u \t \h \W]\$ [\e[0m]"‘

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

3
ответ дан 3 December 2019 в 00:57

Мне пришлось сделать это для нескольких серверов ubuntu, и для всех пользователей я хотел, чтобы в приглашении отображалось полное доменное имя, а не только имя хоста (в противоположность тому, что вы делали). Я обнаружил, что изменения /etc/bash.bashrc недостаточно. Я также пробовал возиться с разными файлами profile.d, но это было бесполезно, потому что домашний .bashrc всегда применяется последним.

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

    #!/bin/bash

        for userfolders in `ls -d /home/*/`
          do
            for bashfiles in `ls -1 ${userfolders}.bashrc`
            do
               sed -i 's|u@\\h|u@\\H|g' $bashfiles
            done
        done
   sed -i 's|u@\\h|u@\\H|g' /etc/bash.bashrc
   sed -i 's|u@\\h|u@\\H|g' /etc/skel/.bashrc
   sed -i 's|u@\\h|u@\\H|g' /root/.bashrc
0
ответ дан 3 December 2019 в 00:57

Теги

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