LINUX.ORG.RU
ФорумTalks

[gentoo-ONLY]накидайте скриптов для «странного»


2

3

интересуют скрипты, связанные с /etc/portage и куски_bashrc
последнее, что пришло в голову мне:

#!/bin/bash

for i in `find /etc/portage/ -type f -name "package*"`;do
  sort -u ${i} --output=${i}
done
и
#!/bin/bash

PACKAGES="$(awk '{print $1}' /etc/portage/package.use | uniq)"

for ATOM in ${PACKAGES};do
  for option in "$(grep "^${ATOM} " /etc/portage/package.use | sed -e "s|${ATOM} ||" | tr " " "\n" | uniq | tr "\n" " ")";do
 ATOM_OPTS+="${option}"
  done
  echo "${ATOM} ${ATOM_OPTS}" | sed 's/[ \t]*$//' >> /tmp/package.use
  unset ATOM_OPTS
done

mv /tmp/package.use /etc/portage/package.use

★★★★

Вчера налабал велосипедную искалку левых файлов в фс (опять :))

#!/bin/bash
cut -d' ' -f2 /var/db/pkg/*/*/CONTENTS >a1
sed -r 's,^(/(usr/)?lib)/,\164/,' a1 |sort -u >a2

find /bin /sbin /lib32 /lib64 /usr /opt /etc /var |sort >b1

comm -13 a2 b1 >c1
grep -Ev \
-e '^/var/db/pkg/' \
-e '^/lib64/rc/init.d/' \
-e '^/lib64/modules/' \
-e '^/usr/lib64/(python2\.7|portage/pym)/.+\.py(c|o)$' \
-e '^/usr/share/mime/' \
-e '^/etc/gconf/gconf.xml.defaults/' \
c1 >c2

uzbl ()
Ответ на: комментарий от fragment

ищет файло, появившееся в системе в обход портежа, наверно

dismal_faun ★★ ()
Ответ на: комментарий от fragment

Пишет в файл c2 пути файлов и каталогов, отсутствующих в базе портажа (те, либо «мусорные», либо созданые eselect/env-update/gcc,binutils-config, либо postinstall скриптами портежа); дабы потом ручками почистить систему от мусора.

uzbl ()
alias eus='/usr/bin/equery uses'
alias eub='/usr/bin/equery b'
alias eud='/usr/bin/equery d'
alias euf='/usr/bin/equery f'
alias evp='/usr/bin/emerge -vp'
alias eum='/usr/bin/emerge --autounmask-write'
science ★★☆ ()

Любой из приведённых здесь скриптов может оказаться патчем Бармина. Используйте на свой страх и риск. Люди выкладывающие скрипты не несут ответственности за повреждение системы или потерю данных, вызванные их применением.

daemonpnz ★★★★★ ()
Ответ на: комментарий от uzbl

может так

#!/bin/bash

grep -v dir /var/db/pkg/*/*/CONTENTS | cut -d" " -f2 > KNOWN_FILES

IGNOR_DIRS="mnt\nmedia\nvar\nportage\nlayman\nsrc/linux"

for directory in `cat KNOWN_FILES | cut -d\/ -f-2 | sort | uniq | grep -v "$(echo -e $IGNOR_DIRS)"`;do
  find "$directory" -type f | grep -v "$(echo -e $IGNOR_DIRS)" >> ALL_FILES
done

#for i in `cat KNOWN_FILES`;do
#  sed -e "s|${i}||" -i ALL_FILES
#done

sort -u KNOWN_FILES --output=KNOWN_FILES
sort -u ALL_FILES --output=ALL_FILES

diff ALL_FILES KNOWN_FILES | grep \< | sed 's/<//'

rm KNOWN_FILES ALL_FILES
проще и универсальней?

megabaks ★★★★ ()

Нахожу очень удобным сокращения типовых sudo-шных комманд. Вот из .bashrc:

alias cp="cp --preserve=xattr"

alias shutdown="sudo /sbin/shutdown"
alias reboot="sudo /sbin/reboot"
alias poweroff="sudo /sbin/poweroff"
alias mount="sudo /bin/mount"
alias umount="sudo /bin/umount"
alias ifconfig="sudo /sbin/ifconfig"
alias iwconfig="sudo /sbin/iwconfig"

# proxy
alias .pr="sudo /etc/init.d/squid restart"
# torrents
alias .tu="sudo /etc/init.d/deluged start"
alias .td="sudo /etc/init.d/deluged stop"
# Wi-Fi
alias .wu="sudo /sbin/ifconfig wlan0 up ; sudo /etc/init.d/dhcpd start"
alias .wd="sudo /etc/init.d/dhcpd stop ; sudo /sbin/ifconfig wlan0 down"
# secured remote access (ssh)
alias .su="sudo /etc/init.d/sshd start"
alias .sd="sudo /etc/init.d/sshd stop"
alias .sr="sudo /etc/init.d/sshd restart"
# ethernet
alias .nu="sudo /etc/init.d/net.eth1 start; .pr"
alias .nd="sudo /etc/init.d/net.eth1 stop"
alias .nr="sudo /etc/init.d/net.eth1 restart; .pr"
# ftp
alias .fu="sudo /etc/init.d/proftpd start"
alias .fd="sudo /etc/init.d/proftpd stop"
alias .fr="sudo /etc/init.d/proftpd restart"

Kroz ★★★★★ ()

У меня через syslog-ng выводятся сообщения юзеру о всяких критичных ошибках и других событиях, которые могут требовать немедленного внимания. Работает как в консоли, так и в GUI - через всплывающие нотификации. Еще ядро иногда считает критичным всякую ерунду - нужно отфильтровать. Использую вот этот скрипт:

#!/bin/sh

mesg y

while read M ; do 
        M=`echo "$M" | grep -v "Initializing destination file writer"`

        # Inserting blank DVD:
        M=`echo "$M" | grep -v "end_request: I/O error, dev sr0, sector" | grep -v "Buffer I/O error on device sr0, logical block" | grep -v "quiet_error: 40 callbacks suppressed"`

        # Inserting a card in cardreader
        M=`echo "$M" | grep -v "Assuming drive cache: write through"`

        # Log statistics of syslog-ng
        M=`echo "$M" | grep -v "Log statistics;"`

        # ntpd outputs when DHCP address not assigned
        M=`echo "$M" | grep -v "ntpd\[.*\]: bind(.*) AF_INET6 .* flags 0x1 failed: Cannot assign requested address"`
        M=`echo "$M" | grep -v "ntpd\[.*\]: failed to init interface for address"`
        M=`echo "$M" | grep -v "ntpd\[.*\]: unable to create socket on "`

        # When some daemon was killed but after that - stopped by init.d
        M=`echo "$M" | grep -v "start-stop-daemon: no matching processes found"`

        if [ -n "$M" ] ; then
               for A in `ls /dev/pts/` ; do                                           
                       echo "$M" | write kroz pts/$A ;                                
               done                                                                   
        fi                                                                            

done
Kroz ★★★★★ ()
Ответ на: комментарий от megabaks

faceplam.sh
Лучше раскури как работает мой, там всё это есть; только быстрее, компактнее + в нём нет нескольких твоих ошибок и он работает корректно на amd64. Это если кратко :3

Сейчас сделаю комментарии в своём коде, поправлю для x86 и перепощу.

uzbl ()

Еще есть скрипт, который мониторит «здоровье» системы через sensors, nvclock, smartctl , и, если превышает пороги заданные мной пишет в syslog (который потом может сообщить мне через предыдущий скрипт).

Kroz ★★★★★ ()
Ответ на: комментарий от uzbl

А твоя искалка левых файлов находит левые временные файлы, понаделанные искалкой левых файлов?
Переделаешь временные файлы на переменные - приходи с зачёткой

zolden ★★★★★ ()
Ответ на: комментарий от zolden

находит … понаделанные искалкой левых файлов?

Не критично, но, так и быть, переделаю с mktemp.

на переменные

Нет пути; теряется возможность наблюдать работу конвеера.

uzbl ()
Ответ на: комментарий от megabaks

Нет; подредактировать пути find и игнор-списка is not a rocket science.

uzbl ()
Ответ на: комментарий от uzbl

так изначально надо было делать кроссплатформенным

megabaks ★★★★ ()
Ответ на: комментарий от Kroz

Kroz

Нахожу очень удобным сокращения типовых sudo-шных комманд.

а ещё это очень опасно.

drBatty ★★ ()
Ответ на: комментарий от uzbl

Нет пути; теряется возможность наблюдать работу конвеера

К счастью теперь это не проблема. Буквально этим утром я открыл отладочное логирование.
Так что теперь достаточно запустить скрипт с ключом --otlado4noye_loggirovanie

zolden ★★★★★ ()

почему в толксах то?

git_commit_current_state() {
        pushd "${S}"
        if [ ! -d .git ]; then
                git init .
        fi
        git config user.name "$your_user"
        git config user.email "$your_mail"
        git add .
        git commit -a -s -m "$@"
        popd
}

post_src_unpack() {
        git_commit_current_state "state after src_unpack()"
}

post_src_prepare() {
        git_commit_current_state "state after src_prepare()"
}
qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

и немного zsh-шных штук (опять же не моего авторства)

ebldpkg () {
  equery belongs /usr/lib64/pkgconfig/$1.pc
}

ebldopen () {
         $EDITOR `equery which $1`
}

urlix () {
    for url in `eix -e $1 --format '<homepage>'`; do
         $BROWSER "$url" > /dev/null;
    done
}

ebldlog () {
         $EDITOR $(dirname `equery which $1`)/ChangeLog
}


qnikst ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.