Исходники и листинги ::: Остальное ::: Мой первый bash скрипт

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
  #!/bin/bash
 
  # Версия 0.3 :)
  # Исправляет ошибку после установки системы с XDM
  # и руссифицирует VLOS 1.3
  # @Sad
 
  # --Функция замены строки-- Взята из /usr/sbin/xgl-script
  function replaceLines()
  {
          #CONSTANTS
          CYES=1
          CNO=0
 
          searchString="$1"
          newLine="$2"
          filename="$3"
          newfilename="$4"
          ignorecase="$5"
 
          #echo "Search: $searchString"
          #echo "newline: $newLine"
 
          if [ "ignorecase" == "$CYES" ]
          then
                  grepSwiches="-ni"
          else
                  grepSwiches="-n"
          fi
 
          if [ -z "$newfilename" ]
          then
                  newfilename="$filename.tmp"
                  tmpFilename=1
          fi
 
          lineNumbers=(` cat $filename |grep $grepSwiches "$searchString" |awk -F : '{print $1}' `)
 
          numLineNumbers=${#lineNumbers[*]}
          i=0
 
          cat $filename > $newfilename
 
          while [ $i -lt $numLineNumbers ]
          do
                  sedcmd="${lineNumbers[$i]}c\$newLine"
          #        echo "sed cmd = $sedcmd"
                  sed -i "$sedcmd" $newfilename
                  let "i+=1"
          done
 
          if [ "$tmpFilename" == "1" ]
          then
                  mv $newfilename $filename
          fi
  }
  ### END --Функция замены строки--
 
  ### --Функция исправляющая баг с XDM после установки VLOS--
  function setXDM()
  {
  # Исправление ошибки с XDM - меняем xdm на gdm
  case $1 in
  gdm)  replaceLines "DISPLAYMANAGER=" "DISPLAYMANAGER="gdm"" "/etc/conf.d/xdm" "" 0
  echo "Изменен /etc/conf.d/xdm -- установлен gdm";;
  kdm)  replaceLines "DISPLAYMANAGER=" "DISPLAYMANAGER="kdm"" "/etc/conf.d/xdm" "" 0
  echo "Изменен /etc/conf.d/xdm -- установлен kdm";;
  *) replaceLines "DISPLAYMANAGER=" "DISPLAYMANAGER="gdm"" "/etc/conf.d/xdm" "" 0
  echo "Изменен /etc/conf.d/xdm -- установлен gdm";;
  esac
  # Перезапускаем xdm
  /etc/init.d/xdm restart
  echo "Попытка изменить /etc/conf.d/xdm завершена"
  }
  ### END --Функция исправляющая баг с XDM после установки VLOS--
 
  ### --Функция установки русской utf-8 локали--
  function setRussianLocale()
  {
  # Создаем локаль
  localedef --no-archive -c -i ru_RU -f UTF-8 ru_RU.utf8
  echo "Создана локаль unicode"
 
  ## Русифицируем /etc/env.d/02locale, /etc/rc.conf, /etc/conf.d/consolefont, /etc/conf.d/keymaps, /etc/make.conf
  # --/etc/env.d/02locale--
  replaceLines "LC_ALL=" "LC_ALL=""" "/etc/env.d/02locale" "" 0
  replaceLines "LANG=" "LANG="ru_RU.UTF-8"" "/etc/env.d/02locale" "" 0
  echo "Изменен /etc/env.d/02locale"
  # --/etc/rc.conf--
  replaceLines "UNICODE=" "UNICODE="yes"" "/etc/rc.conf" "" 0
  echo "Изменен /etc/rc.conf"
  # --/etc/conf.d/consolefont--
  replaceLines "CONSOLEFONT=" "CONSOLEFONT="Cyr_a8x16"" "/etc/conf.d/consolefont" "" 0
  echo "Изменен /etc/conf.d/consolefont"
  # --/etc/conf.d/keymaps--
  replaceLines "KEYMAP=" "KEYMAP="-u ru4"" "/etc/conf.d/keymaps" "" 0
  replaceLines "SET_WINDOWKEYS=" "SET_WINDOWKEYS="yes"" "/etc/conf.d/keymaps" "" 0
  replaceLines "DUMPKEYS_CHARSET=" "DUMPKEYS_CHARSET="koi8-r"" "/etc/conf.d/keymaps" "" 0
  echo "Изменен /etc/conf.d/keymaps"
  # --/etc/locales.build--
  ## Проверяем на наличие нужных локалей в /etc/locales.build
  ## И добавляем если их нету
 
  ## Проверка на наличие ru_RU.UTF-8/UTF-8
  if [ -n "`cat /etc/locales.build |grep ru_RU.UTF-8/UTF-8`" ]
  then
  echo "ru_RU.UTF-8/UTF-8 уже есть"
  else
  echo ru_RU.UTF-8/UTF-8 >> /etc/locales.build
  fi
  ## Проверка на наличие ru_RU.KOI8-R/KOI8-R
  if [ -n "`cat /etc/locales.build |grep ru_RU.KOI8-R/KOI8-R`" ]
  then
  echo "ru_RU.KOI8-R/KOI8-R уже есть"
  else
  echo ru_RU.KOI8-R/KOI8-R >> /etc/locales.build
  fi
  echo "Изменен /etc/locales.build"
  # --/etc/make.conf--
  ## Проверяем наличие нужного параметра LINGUAS="ru"
  ## И добавляем если нету
  if [ -n "`cat /etc/make.conf |grep 'LINGUAS="ru"'`" ]
  then
  echo "LINGUAS уже поставлен"
  else
  echo 'LINGUAS="ru"' >> /etc/make.conf
  fi
  echo "Изменен /etc/make.conf"
  echo "Перезапуск сервисов"
 
  ## Перезапускаем сервисы
  /etc/init.d/keymaps restart
  /etc/init.d/consolefont restart
  echo "Попытка руссификации VLOS закончена"
  }
  ### END --Функция установки русской utf-8 локали--
 
 
  ### --Функция включения драйверов NVIDIA--
  function setNvidiaDrivers
  {
  # Подключаем драйвера nvidia
  echo "Выбираем OpenGL NVIDIA"
  eselect opengl set nvidia
  echo "OpenGL готов"
  echo "Изменяем конфигурацию X11"
  replaceLines "dri" "# Load  "dri"" "/etc/X11/xorg.conf" "" 0
  replaceLines ""nv"" " Driver      "nvidia"" "/etc/X11/xorg.conf" "" 0
  echo "Изменен etc/X11/xorg.conf"
  echo "Подключаем модуль nvidia"
  depmod && modprobe nvidia
  echo "Модуль подключен"
  echo "Добавляем модуль в автозагрузку"
  if [ -n "`cat /etc/modules.autoload.d/kernel-2.6 | grep nvidia`" ]
  then
  echo "nvidia уже присутсвует в загрузке модулей"
  else
  echo "nvidia" >> /etc/modules.autoload.d/kernel-2.6
  echo "Изменен /etc/modules.autoload.d/kernel-2.6"
  fi
  # Перезапускаем xdm
  echo "Перезапускаем xdm"
  /etc/init.d/xdm restart
  echo "Попытка поставить драйвера NVIDIA завершена"
  }
  ### END --Функция включения драйверов NVIDIA--
 
  ### --Обработка параметров запуска myfixscript--
  case $1 in
  1) echo "Setting XDM"
  setXDM "${2}";;
  2) echo "Setting Russian UTF-8 Locale"
  setRussianLocale;;
  3) echo "Setting nvidia driver"
  setNvidiaDrivers;;
  *) echo "1. Set XDM"
  echo " Использование: myfixscript 1 [gdm|kdm]"
  echo " По умолчанию gdm"
  echo " Изменяет файл /etc/conf.d/xdm"
  echo " И перезапускает /etc/init.d/xdm"
  echo "2. Set Russian UTF-8 Locale"
  echo " Использование: myfixscript 2"
  echo " Изменяемые файлы:"
  echo " /etc/env.d/02locale"
  echo " /etc/rc.conf"
  echo " /etc/conf.d/consolefont"
  echo " /etc/conf.d/keymaps"
  echo " /etc/locales.build"
  echo " /etc/make.conf"
  echo " Затем перезапускает сервисы:"
  echo " /etc/init.d/keymaps"
  echo " /etc/init.d/consolefont"
  echo "3. Set NVIDIA Drivers"
  echo " Использование: myfixscript 3"
  echo " Изменяемые файлы:"
  echo " /etc/X11/xorg.conf"
  echo " /etc/modules.autoload.d/kernel-2.6"
  echo " Переключает OpenGL на nvidia"
  echo " Подключает модуль nvidia"
  echo " Перезапускает /etc/init.d/xdm";;
  esac
  ### END --Обработка параметров запуска myfixscript--
<<< Предыдущая работа

Вернуться в галерею исходников
Мой первый bash скрипт
Автор: altwazar*
Город: Новокузнецк
Дата: 19.01.2007  22:42
Комментариев: 1
Просмотров: 236
Оценка: 0 (0|0|0|0|0) [0]

Вернуться на главную
Авторский комментарий к работе: Сделал для дистрибутива VLOS Linux, на выбор может" 1) Исправить последствия ошибки в инсталяторе с display manager 2) Довести до конца руссификацию (русский в консоли) 3) Установить драйвера nvidia и соответственно изменить настройки Х сервера. Выпол
Вы не можете оценивать

КОММЕНТАРИИ К РАБОТЕ:
wolong ::: комментарий от 21.01.2007 | 19:00
wolong Искатель (ур.5)
Очки: 383
Город: Tomsk
Тв. работ: 1
Рег: 15.06.2006 (280)
отлично)

явной пользы нет, как говорится для личного ползования, самому конфиги править гораздо легче

но пять однозначно за постинг башевых скриптов) пиши ещё)


--------------------
$_="1K8}3v3w8(5f1o2q5y6n3h1s5%2R0e9{7s9)5m1b6i2m6k3u";s/(.)(.)/pack('C',ord($2)-$1)/eg;print;