Показаны сообщения с ярлыком command-line. Показать все сообщения
Показаны сообщения с ярлыком command-line. Показать все сообщения
вторник, 14 августа 2018 г.
среда, 28 июня 2017 г.
(wmic) Отфильтрованный список запущенных процессов с полной информацией
Пример команды, которая создает HTML-файл "C:\proclist.htm" со списком запущенных процессов с информацией о пути к исполняемому файлу процесса и отфильтрованный по наименованию исполняемого файла (в примере это "java.exe"):
wmic /output:C:\proclist.htm process where "name='java.exe'" list full /format:htable
понедельник, 13 февраля 2017 г.
"cmd /k" вместо "& pause"
Чтобы увидеть результаты выполнения утилит командной строки (например, "ipconfig /all", "route print", "systeminfo" и т.д.) нужно, либо сначала открывать сам интерпретатор командной строки ("cmd"), либо перенаправлять вывод в текстовый файл, либо дописывать к концу команды "& pause" (но это решение помогает только если нужно увидеть результат выполнения пакетного файла).
Вариант №1
Проще давать команду интерпретатору "не закрывать консоль после выполнения команды" с помощью конструкции "cmd /k <команда>":
Вариант №2
У строкового параметра "(По умолчанию)" В ветках
Вариант №1
Проще давать команду интерпретатору "не закрывать консоль после выполнения команды" с помощью конструкции "cmd /k <команда>":
cmd /k ipconfig /all
cmd /k route print
cmd /k systeminfo
и т.д.
Вариант №2
У строкового параметра "(По умолчанию)" В ветках
HKEY_CLASSES_ROOT\batfile\shell\open\commandнужно заменить значение
HKEY_CLASSES_ROOT\cmdfile\shell\open\command
"%1" %*на
cmd /k "%1" %*
суббота, 5 марта 2016 г.
среда, 24 февраля 2016 г.
Запрет изменения/удаления файлов в Linux
Можно правами (chown, chmod) ограничить, а можно:
chattr +i +u <file>
"+" - добавление флага;
"-" - снятие флага;
i - флаг "неизменяемости";
u - флаг "неудаляемости".
chattr +i +u <file>
"+" - добавление флага;
"-" - снятие флага;
i - флаг "неизменяемости";
u - флаг "неудаляемости".
Labels:
безопасность,
доступ,
ограничение,
ограничения,
права,
права доступа,
attr,
chattr,
chmod,
chown,
cmd,
command-line,
linux,
readonly,
right,
rights,
root
пятница, 27 ноября 2015 г.
tee - перенаправление стандартного вывода в файл
https://ru.wikipedia.org/wiki/Tee
Пример:
Пример:
bash -v script.sh 2>&1 | tee script.log"bash -v" - сообщает каждую команду из script.sh в STDOUT перед выполнением (аналог "ECHO ON" в MS CMD").
вторник, 28 апреля 2015 г.
[успешно] "SET /A" в составе цикла "FOR"
Задача:
Решение:
В батнике, в составе цикла FOR команда "SET /A ..." с последующим выводом результата (внутри того же цикла "FOR") почему-то не обрабатывается.
Решение:
Для вывода результата нужно обращаться к переменной через восклицательный знак "!" (см. строку с "echo") и обязательно в режиме "ENABLEDELAYEDEXPANSION":BAT-вариант:
SETLOCAL ENABLEDELAYEDEXPANSION
SET myCount=0
FOR /F "tokens=*" %%i in (my_list_file.txt) DO (
SET /A myCount+=1
ECHO !myCount!
)
пятница, 17 апреля 2015 г.
Управление виртуальной машиной VirtualBox в консоли
Просмотр списка зарегистрированных виртуальных машин:
vboxmanage list vmsЗапуск без окна (в фоне):
vboxheadless -s <VM_name>Закрыть, сохранив состояние:
vboxmanage controlvm <VM_name> savestateЗакрыть, принудительно отключив питание:
vboxmanage controlvm <VM_name> poweroffЗакрыть, симулировав однократное нажатие на кнопку питания (дальше уже зависит от настроек ОС: либо "спросить о действии", либо "завершить работы", либо "ничего не делать"):
vboxmanage controlvm <VM_name> acpipowerbutton
четверг, 2 апреля 2015 г.
вторник, 17 марта 2015 г.
ousers.sh
cat ousers.sh
#!/bin/bash
# 17.03.2015
# Selecting usernames and their statuses from dba_users (ORACLE)
daScr=/tmp/osu_120629.sql
echo SET PAGESIZE 0\;>$daScr
if [ -z $1 ]; then # Выполнять этот блок, если скрипт запущен без ключей.
echo select username \|\| case when account_status=\'OPEN\' then \'\' else \' \(\' \|\| account_status \|\| \'\)\' end case from dba_users>>$daScr
echo where default_tablespace=\'USERS\'>>$daScr
echo and username not in \(\'APEX_PUBLIC_USER\',\'ORACLE_OCM\'\,\'SPATIAL_CSW_ADMIN_USR\',\'SPATIAL_WFS_ADMIN_USR\'\) --Исключаем из выборки пользователей, которые создаются по-умолчанию в процессе установки и конфигурирования Oracle>>$daScr
echo and username like \'%=_%\' escape \'=\' -- Включаем в выборку только тех пользователей, у которых в имени есть символ подчеркивания \(мы только так схемы и называем\)>>$daScr
echo order by account_status desc, username asc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi
elif [ $1 == "-s" ]; then # Скрипт выводит список схем с указанием размера каждой из них
echo select owner, to_char\(sum\(bytes\)/1048576,\'999G999G999G999D999\'\) \"SIZE \(MB\)\" from dba_segments group by owner order by sum\(\bytes\) desc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
else
echo Usage:
echo $0 [-s]
fi
rm $daScr
#!/bin/bash
# 17.03.2015
# Selecting usernames and their statuses from dba_users (ORACLE)
daScr=/tmp/osu_120629.sql
echo SET PAGESIZE 0\;>$daScr
if [ -z $1 ]; then # Выполнять этот блок, если скрипт запущен без ключей.
echo select username \|\| case when account_status=\'OPEN\' then \'\' else \' \(\' \|\| account_status \|\| \'\)\' end case from dba_users>>$daScr
echo where default_tablespace=\'USERS\'>>$daScr
echo and username not in \(\'APEX_PUBLIC_USER\',\'ORACLE_OCM\'\,\'SPATIAL_CSW_ADMIN_USR\',\'SPATIAL_WFS_ADMIN_USR\'\) --Исключаем из выборки пользователей, которые создаются по-умолчанию в процессе установки и конфигурирования Oracle>>$daScr
echo and username like \'%=_%\' escape \'=\' -- Включаем в выборку только тех пользователей, у которых в имени есть символ подчеркивания \(мы только так схемы и называем\)>>$daScr
echo order by account_status desc, username asc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi
elif [ $1 == "-s" ]; then # Скрипт выводит список схем с указанием размера каждой из них
echo select owner, to_char\(sum\(bytes\)/1048576,\'999G999G999G999D999\'\) \"SIZE \(MB\)\" from dba_segments group by owner order by sum\(\bytes\) desc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
else
echo Usage:
echo $0 [-s]
fi
rm $daScr
osize.sh
cat osize.sh
#!/bin/sh
# 11.03.2015
daScr=/tmp/ots_150306.sql
echo SET LINESIZE 125\;>$daScr
echo SET PAGESIZE 90\;>>$daScr
if [ -z $1 ]; then # Выполнять этот блок, если скрипт запущен без ключей.
echo --DBA_DATA_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo round\(sum\(df.maxbytes\)/1048576\) \"SizeMAX\(MB\)\",>>$daScr
echo --round\(sum\(df.bytes\)/1048576\) \"SizeCUR\(MB\)\",>>$daScr
echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\) \"Free\(MB\)\",>>$daScr
echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\' \"Free\(%\)\">>$daScr
echo FROM dba_data_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo UNION ALL>>$daScr
echo --DBA_TEMP_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo round\(sum\(df.maxbytes\)/1048576\),>>$daScr
echo --round\(sum\(df.bytes\)/1048576\),>>$daScr
echo round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\),>>$daScr
echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\'>>$daScr
echo FROM dba_temp_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo order by 1 desc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi # Если скрипт запущен в GUI, то окно не закрываем.
elif [ $1 == "-g" ]; then # Скрипт выводит дополнительный столбец (SizeCUR - текущий фактический размер на диске), и все числовые значения, группируются по разрядам.
echo --DBA_DATA_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo to_char\(round\(sum\(df.maxbytes\)/1048576\),\'999G999G999G999\'\) \"SizeMAX\(MB\)\",>>$daScr
echo to_char\(round\(sum\(df.bytes\)/1048576\),\'999G999G999G999\'\) \"SizeCUR\(MB\)\",>>$daScr
echo to_char\(round\(\(sum\(df.maxbytes\)-sum\(df.bytes\)\)/1048576\),\'999G999G999G999\'\) \"Free\(MB\)\",>>$daScr
echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\' \"Free\(%\)\">>$daScr
echo FROM dba_data_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo UNION ALL>>$daScr
echo --DBA_TEMP_FILES>>$daScr
echo SELECT /\* + RULE \*/>>$daScr
echo df.tablespace_name,>>$daScr
echo to_char\(round\(sum\(df.maxbytes\)/1048576\),\'999G999G999G999\'\),>>$daScr
echo to_char\(round\(sum\(df.bytes\)/1048576\),\'999G999G999G999\'\),>>$daScr
echo to_char\(round\(\(sum\(df.maxbytes\) - sum\(df.bytes\)\)/1048576\),\'999G999G999G999\'\),>>$daScr
echo 100-round\(\(sum\(df.bytes\)\*100\)/sum\(df.maxbytes\)\)\|\|\'\%\'>>$daScr
echo FROM dba_temp_files df>>$daScr
echo GROUP BY df.tablespace_name>>$daScr
echo order by 1 desc\;>>$daScr
echo exit\;>>$daScr
sqlplus -S / as sysdba @$daScr
else
echo Usage:
echo $0 [-g]
fi
rm $daScr
пятница, 13 марта 2015 г.
importdp.sh - вариант без FROM_USERNAME
Формат команды
./import.sh <ИМЯ НОВОЙ СХЕМЫ> <ФАЙЛ ДАМПА>
Данная редакция скрипта "самостоятельно узнаёт" "старое" имя схемы, которое скрывается в параметре OWNER_NAME в файле дампа.
Может работать только с дампами, содержащими лишь одну схему!
Перед импортом создает схему с предустановленным в параметре NEW_SCHEMA_PASSWD паролем.
cat importdp.sh
#!/bin/sh
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <TO_USERNAME> <FILE_NAME>"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
TO_USERNAME=$1
FILENAME=$2
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
# block_150312_2116(begin)
# d.aryshtaev@bftcom.com, 13.03.2015 02:31 IRKT
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$TO_USERNAME\'\)\;>>$daScr
echo exit\;>>$daScr
daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $TO_USERNAME identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $TO_USERNAME\;>>$daScr
echo grant select on v_\$locked_object to $TO_USERNAME\;>>$daScr
echo GRANT SELECT ANY DICTIONARY TO $TO_USERNAME\;>>$daScr
echo exit \;>>$daScr
sqlplus -S / as sysdba @$daScr
# block_150312_2116_B(begin)
# Вытаскиваем OWNER_NAME из дампа и запоминаем значение в переменной FROM_USERNAME:
daDDLfile=tmp_ddl_`date +%y%m%d_%H%M%S`.txt
$CMD $SYSTEM/$PASSWD$URL SILENT=ALL NOLOGFILE=Y DIRECTORY=BACKUP_DIR DUMPFILE=$FILENAME SQLFILE=$daDDLfile
daStrFromDDL=`cat $daDDLfile|grep "CREATE USER"`
rm $daDDLfile
FROM_USERNAME=${daStrFromDDL:14:$(expr `expr index "${daStrFromDDL:14}" \"` - 1)}
# block_150312_2116_B(end)
# block_150312_2116_A(end)
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using dump $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $TO_USERNAME already exists.
fi
rm $daScr
# block_150312_2116(end)
./import.sh <ИМЯ НОВОЙ СХЕМЫ> <ФАЙЛ ДАМПА>
Данная редакция скрипта "самостоятельно узнаёт" "старое" имя схемы, которое скрывается в параметре OWNER_NAME в файле дампа.
Может работать только с дампами, содержащими лишь одну схему!
Перед импортом создает схему с предустановленным в параметре NEW_SCHEMA_PASSWD паролем.
cat importdp.sh
#!/bin/sh
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <TO_USERNAME> <FILE_NAME>"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
TO_USERNAME=$1
FILENAME=$2
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
# block_150312_2116(begin)
# d.aryshtaev@bftcom.com, 13.03.2015 02:31 IRKT
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$TO_USERNAME\'\)\;>>$daScr
echo exit\;>>$daScr
daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $TO_USERNAME identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $TO_USERNAME\;>>$daScr
echo grant select on v_\$locked_object to $TO_USERNAME\;>>$daScr
echo GRANT SELECT ANY DICTIONARY TO $TO_USERNAME\;>>$daScr
echo exit \;>>$daScr
sqlplus -S / as sysdba @$daScr
# block_150312_2116_B(begin)
# Вытаскиваем OWNER_NAME из дампа и запоминаем значение в переменной FROM_USERNAME:
daDDLfile=tmp_ddl_`date +%y%m%d_%H%M%S`.txt
$CMD $SYSTEM/$PASSWD$URL SILENT=ALL NOLOGFILE=Y DIRECTORY=BACKUP_DIR DUMPFILE=$FILENAME SQLFILE=$daDDLfile
daStrFromDDL=`cat $daDDLfile|grep "CREATE USER"`
rm $daDDLfile
FROM_USERNAME=${daStrFromDDL:14:$(expr `expr index "${daStrFromDDL:14}" \"` - 1)}
# block_150312_2116_B(end)
# block_150312_2116_A(end)
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using dump $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $TO_USERNAME already exists.
fi
rm $daScr
# block_150312_2116(end)
четверг, 12 марта 2015 г.
importdp.sh - вариант с FROM_USERNAME
#!/bin/sh
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# block_150312_2116(begin)
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$2\'\)\;>>$daScr
echo exit\;>>$daScr
export daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $2 identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $2\;>>$daScr
echo grant select on v_\$locked_object to $2\;>>$daScr
echo exit \;>>$daScr
sqlplus / as sysdba @$daScr
# Весь остальной скрипт ниже не изменялся.
# block_150312_2116_A(end)
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <FROM_USERNAME> [<TO_USERNAME>] [<FILE_NAME>]"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXSTEND23 LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
FROM_USERNAME=$1
TO_USERNAME=$2
FILENAME=$3
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using damp $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $2 already exists.
fi
rm $daScr
# block_150312_2116(end)
# Set the parameters first
# -------------------------------------
# system user name
SYSTEM=<DBA_USERNAME>
# system user password
PASSWD=<DBA_PASSWORD>
# Instance name (if any)
URL=@<ORACLE_SID>
# New schema password
NEW_SCHEMA_PASSWD=<NEW_SCHEMA_PASSWD>
# block_150312_2116(begin)
# Проверка наличия новой схемы (импорт будет выполнен только в случае, если новой схемы в экземпляре Oracle нет):
daScr=/tmp/imp_150312_2100.sql
echo SET PAGESIZE 0\;>$daScr
echo select count\(\*\) from dba_users where username=upper\(\'$2\'\)\;>>$daScr
echo exit\;>>$daScr
export daUsrCnt=`sqlplus -S / as sysdba @$daScr`
if [ $daUsrCnt == 0 ]; then
# block_150312_2116_A(begin)
# Создаем схему до импорта, чтобы сразу же задать ей пароль [потому что мы ленимся :-) ]:
echo create user $2 identified by $NEW_SCHEMA_PASSWD\;>$daScr
echo grant connect\,resource to $2\;>>$daScr
echo grant select on v_\$locked_object to $2\;>>$daScr
echo exit \;>>$daScr
sqlplus / as sysdba @$daScr
# Весь остальной скрипт ниже не изменялся.
# block_150312_2116_A(end)
# Set the ORACLE_HOME variable to find an "imp" utility
# ORACLE_HOME=/usr/oracle
# -------------------------------------
help() {
echo "-------------------------------------"
echo "Logical Database restore utility v0.1"
echo "-------------------------------------"
echo "USAGE:"
echo "./importdp.sh <FROM_USERNAME> [<TO_USERNAME>] [<FILE_NAME>]"
echo
echo "EXAMPLE:"
echo "./importdp.sh LNXSTEND23 LNXTEST23 lnx.dmp"
}
if [ $# -eq 0 ] ; then
help;
exit 1;
fi
FROM_USERNAME=$1
TO_USERNAME=$2
FILENAME=$3
LOGFILE="restore_$TO_USERNAME.log"
if [ "$FILENAME" == "" ] ; then
FILENAME="expdat.dmp";
fi
if [ "$TO_USERNAME" == "" ] ; then
TO_USERNAME=$FROM_USERNAME;
fi
if [ "$ORACLE_HOME" != "" ] ; then
CMD="$ORACLE_HOME/bin/impdp";
else
CMD="impdp";
fi
if [ ! -f $FILENAME ] ; then
echo "ERROR:"
echo "File $FILENAME does not exist.";
exit 1;
fi
echo "-----------------------------------------"
echo "Restoring from $FROM_USERNAME to $TO_USERNAME using damp $FILENAME ..."
echo "-----------------------------------------"
export NLS_DATE_FORMAT="YYYY-MM-DD"
export NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH24:MI:SS"
$CMD $SYSTEM/$PASSWD$URL SCHEMAS=$FROM_USERNAME DIRECTORY=BACKUP_DIR REMAP_SCHEMA=$FROM_USERNAME:$TO_USERNAME TRANSFORM=OID:N DUMPFILE=$FILENAME LOGFILE=$LOGFILE
else
# Если новая схема уже существует, то сообщаем об этом пользователю и не выполняем импорт:
echo Schema $2 already exists.
fi
rm $daScr
# block_150312_2116(end)
понедельник, 2 марта 2015 г.
Информация о крайнем подключении к БД Oracle
Реализован скрипт, который показывает дату крайнего подключения к базам Oracle:
Пример:
/* bash-вариант */:
----
Необходимо, чтобы заполнялась таблица dba_audit_session, для этого:
alter system set audit_trail=true scope=spfile; --включение параметра
audit connect; --либо аудит любого подключения
audit create session whenever successful; --либо аудит только успешно созданных сессий (сейчас указано это)
create pfile from spfile; - сохранить параметры
Перезапустить экземпляр Oracle.
select du.username||case when du.account_status='OPEN' then '' else ' ('||du.account_status||')' end USERNAME, to_char(max(da.TIMESTAMP),'DD.MM.YYYY') LASTLOGON
from dba_users du left join dba_audit_session da on da.username=du.username
where du.default_tablespace='USERS'
and du.username not in ('APEX_PUBLIC_USER','ORACLE_OCM','SPATIAL_CSW_ADMIN_USR','SPATIAL_WFS_ADMIN_USR') --Исключаем из выборки пользователей, которые создаются по-умолчанию в процессе установки и конфигурирования Oracle
and du.username like '%=_%' escape '=' -- Включаем в выборку только тех пользователей, у которых в имени есть символ подчеркивания (мы только так схемы и называем)
group by du.username||case when du.account_status='OPEN' then '' else ' ('||du.account_status||')' end
order by 1 asc;
Пример:
[oracle@dbserver playground]$ ./olastlogon.sh
USERNAME                                                      LASTLOGON
----------------------------------------------------------------- ----------
F_ANGARSK_150218                                              04.03.2015
F_BRATSK_150218
F_IRKOBL_150129                                                   06.03.2015
3 rows selected.
/* bash-вариант */:
cat olastlogon.sh
#!/bin/bash
# Selecting usernames and their statuses from dba_users with last logon info from dba_audit_session (ORACLE)
daScr=/tmp/osu_140829.sql
echo SET LINESIZE 150\;>$daScr
echo SET PAGESIZE 300\;>>$daScr
echo select du.username\|\|case when du.account_status=\'OPEN\' then \'\' else \' \(\'\|\|du.account_status\|\|\'\)\' end USERNAME, to_char\(max\(da.TIMESTAMP\),\'\DD.MM.YYYY'\) LASTLOGON>>$daScr
echo from dba_users du left join dba_audit_session da on da.username=du.username>>$daScr
echo where du.default_tablespace=\'USERS\'>>$daScr
echo and du.username not in \(\'APEX_PUBLIC_USER\',\'ORACLE_OCM\'\,\'SPATIAL_CSW_ADMIN_USR\',\'SPATIAL_WFS_ADMIN_USR\'\) --Исключаем из выборки пользователей, которые создаются по-умолчанию в процессе установки и конфигурирования Oracle>>$daScr
echo and du.username like \'%=_%\' escape \'=\' -- Включаем в выборку только тех пользователей, у которых в имени есть символ подчеркивания \(мы только так схемы и называем\)>>$daScr
echo group by du.username\|\|case when du.account_status=\'OPEN\' then \'\' else \' \(\'\|\|du.account_status\|\|\'\)\' end>>$daScr
echo order by 1 asc\;>>$daScr
echo exit\;>>$daScr
if [ $USER == root ]
then
su - oracle -c "sqlplus / as sysdba @$daScr"
else
sqlplus / as sysdba @$daScr
fi
rm $daScr
if [[ -n $DISPLAY ]]; then read -p 'Press ENTER key to exit.'; fi
----
Необходимо, чтобы заполнялась таблица dba_audit_session, для этого:
alter system set audit_trail=true scope=spfile; --включение параметра
audit connect; --либо аудит любого подключения
audit create session whenever successful; --либо аудит только успешно созданных сессий (сейчас указано это)
create pfile from spfile; - сохранить параметры
Перезапустить экземпляр Oracle.
воскресенье, 1 марта 2015 г.
/ read only
При сбое во время загрузки ОС Linux корневая директория "/" монтируется с уровнем доступа "только чтение" (read only). Чтобы получить возможность вносить изменения в системные файлы, необходимо перемонтировать корневой раздел в режиме "чтения и изменения" (read-write), например, внести изменения в /etc/fstab, нужно выполнить команду:
mount / -o remount,rw
+
mount / -o remount,rw
+
пятница, 27 февраля 2015 г.
четверг, 12 февраля 2015 г.
StopServer.bat
cd .\XML &&call .\xml.cmd .\shutdown.xml
@echo off
if %ERRORLEVEL%==0 (goto mrk_ok) else (goto mrk_fail)
:mrk_ok
    rem Если команда завершения выполнилась успешно, то окно можно и закрыть по таймауту
    timeout 5
    goto end
:mrk_fail
    rem Если команда завершения выполнилась с ошибкой, то окно не закрываем, чтобы администратор мог ознакомиться с ее текстом
    pause
    goto end
:end
@echo off
if %ERRORLEVEL%==0 (goto mrk_ok) else (goto mrk_fail)
:mrk_ok
    rem Если команда завершения выполнилась успешно, то окно можно и закрыть по таймауту
    timeout 5
    goto end
:mrk_fail
    rem Если команда завершения выполнилась с ошибкой, то окно не закрываем, чтобы администратор мог ознакомиться с ее текстом
    pause
    goto end
:end
среда, 24 декабря 2014 г.
chmod для директорий и файлов по отдельности
С помощью команды find можно устанавливать права для файлов и директорий по отдельности. Например:
для директорий:
chmod 755 $(find /path/to/base/dir -type d)
для файлов:
chmod 644 $(find /path/to/base/dir -type f)
отсюда
Но эта комбинация не работает в случаях, когда в названии файлов или директорий есть пробелы. Нужно разобраться.
для директорий:
chmod 755 $(find /path/to/base/dir -type d)
для файлов:
chmod 644 $(find /path/to/base/dir -type f)
отсюда
Но эта комбинация не работает в случаях, когда в названии файлов или директорий есть пробелы. Нужно разобраться.
четверг, 18 декабря 2014 г.
azka.bat
Пакетник для запуска клиентских частей АЦК-Ф, АЦК-П и АЦК-ГЗ
/* Метаязыком:
Если существует client\maincontroller.exe, то: если существует client\Payables.ocx (P.S. тут можно любой из 4-х ключевых файлов упомянуть: killcache.bat, CapInvest.ocx, Payables.ocx, reciprocal.ocx), то это клиентская часть АЦК-Ф,
иначе это клиентская часть АЦК-П,
Иначе, если существует client\order.exe, то это клиентская часть АЦК-ГЗ,
иначе - хз.
*/
@ECHO OFF
REM prev1 version 09.12.2015
REM prev2 version 15.10.2016
REM prev3 version 22.10.2016
REM prev4 version 03.09.2019
REM curr version 15.02.2021
SETLOCAL ENABLEDELAYEDEXPANSION
SET okstart=0
IF EXIST AzkExchange.exe (
TITLE [AZKExchange] && ECHO [AZKExchange] запускается ...
SET okstart=1
START AzkExchange.exe
) ELSE (
IF EXIST client (
IF EXIST client\maincontroller.exe (
IF EXIST client\Payables.ocx (
TITLE [АЦК-Финансы] && ECHO [АЦК-Финансы] запускается ...
IF EXIST client\Azk2Clnt.ini (
FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\Azk2Clnt.ini') DO (
SET PORT_CLNT=%%a
)
IF EXIST StartServer.bat (
FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
SET PORT_SRVR=%%a
)
IF "!PORT_SRVR!"=="!PORT_CLNT!" (
SET okstart=1
CD client
START maincontroller.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
) ELSE (
ECHO Выполнение прервано:
ECHO не совпадают порты в файлах
ECHO StartServer.bat=!PORT_SRVR!
ECHO client\Azk2Clnt.ini=!PORT_CLNT!
start %CD%\client\Azk2Clnt.ini
goto exit
)
) ELSE (
ECHO Выполнение прервано: не найден файл StartServer.bat
goto exit
)
) ELSE (
ECHO Выполнение прервано: не найден файл client\Azk2Clnt.ini
goto exit
)
) ELSE (
TITLE [АЦК-Планирование] && ECHO [АЦК-Планирование] запускается ...
IF EXIST client\Azk2Clnt.ini (
FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\Azk2Clnt.ini') DO (
SET PORT_CLNT=%%a
)
IF EXIST StartServer.bat (
FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
SET PORT_SRVR=%%a
)
IF "!PORT_SRVR!"=="!PORT_CLNT!" (
SET okstart=1
CD client
START maincontroller.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
) ELSE (
ECHO Выполнение прервано:
ECHO не совпадают порты в файлах
ECHO StartServer.bat=!PORT_SRVR!
ECHO client\Azk2Clnt.ini=!PORT_CLNT!
start %CD%\client\Azk2Clnt.ini
goto exit
)
) ELSE (
ECHO Выполнение прервано:
ECHO не найден файл
ECHO StartServer.bat
goto exit
)
) ELSE (
ECHO Выполнение прервано:
ECHO не найден файл
ECHO client\Azk2Clnt.ini
goto exit
)
)
) ELSE (
IF EXIST client\order.exe (
TITLE && ECHO [АЦК-Госзаказ] запускается ...
IF EXIST client\order.ini (
FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\order.ini') DO (
SET PORT_CLNT=%%a
)
IF EXIST StartServer.bat (
FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
SET PORT_SRVR=%%a
)
IF "!PORT_SRVR!"=="!PORT_CLNT!" (
SET okstart=1
CD client
START order.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
) ELSE (
ECHO Выполнение прервано:
ECHO не совпадают порты в файлах
ECHO StartServer.bat=!PORT_SRVR!
ECHO client\order.ini=!PORT_CLNT!
start %CD%\client\order.ini
goto exit
)
) ELSE (
ECHO Выполнение прервано:
ECHO не найден файл
ECHO StartServer.bat
goto exit
)
) ELSE (
ECHO Выполнение прервано:
ECHO не найден файл
ECHO client\order.ini
goto exit
) ) ELSE (
ECHO Выполнение прервано:
ECHO подсистема не распознана
)
)
) ELSE (
ECHO Выполнение прервано:
ECHO не удалось распознать подсистему, не найдены ни каталог "client", ни файл AzkExchange.exe
)
)
:exit
IF "%okstart%"=="1" (timeout 5) ELSE (pause)
ENDLOCAL
/* Метаязыком:
Если существует client\maincontroller.exe, то: если существует client\Payables.ocx (P.S. тут можно любой из 4-х ключевых файлов упомянуть: killcache.bat, CapInvest.ocx, Payables.ocx, reciprocal.ocx), то это клиентская часть АЦК-Ф,
иначе это клиентская часть АЦК-П,
Иначе, если существует client\order.exe, то это клиентская часть АЦК-ГЗ,
иначе - хз.
*/
@ECHO OFF
REM prev1 version 09.12.2015
REM prev2 version 15.10.2016
REM prev3 version 22.10.2016
REM prev4 version 03.09.2019
REM curr version 15.02.2021
SETLOCAL ENABLEDELAYEDEXPANSION
SET okstart=0
IF EXIST AzkExchange.exe (
TITLE [AZKExchange] && ECHO [AZKExchange] запускается ...
SET okstart=1
START AzkExchange.exe
) ELSE (
IF EXIST client (
IF EXIST client\maincontroller.exe (
IF EXIST client\Payables.ocx (
TITLE [АЦК-Финансы] && ECHO [АЦК-Финансы] запускается ...
IF EXIST client\Azk2Clnt.ini (
FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\Azk2Clnt.ini') DO (
SET PORT_CLNT=%%a
)
IF EXIST StartServer.bat (
FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
SET PORT_SRVR=%%a
)
IF "!PORT_SRVR!"=="!PORT_CLNT!" (
SET okstart=1
CD client
START maincontroller.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
) ELSE (
ECHO Выполнение прервано:
ECHO не совпадают порты в файлах
ECHO StartServer.bat=!PORT_SRVR!
ECHO client\Azk2Clnt.ini=!PORT_CLNT!
start %CD%\client\Azk2Clnt.ini
goto exit
)
) ELSE (
ECHO Выполнение прервано: не найден файл StartServer.bat
goto exit
)
) ELSE (
ECHO Выполнение прервано: не найден файл client\Azk2Clnt.ini
goto exit
)
) ELSE (
TITLE [АЦК-Планирование] && ECHO [АЦК-Планирование] запускается ...
IF EXIST client\Azk2Clnt.ini (
FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\Azk2Clnt.ini') DO (
SET PORT_CLNT=%%a
)
IF EXIST StartServer.bat (
FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
SET PORT_SRVR=%%a
)
IF "!PORT_SRVR!"=="!PORT_CLNT!" (
SET okstart=1
CD client
START maincontroller.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
) ELSE (
ECHO Выполнение прервано:
ECHO не совпадают порты в файлах
ECHO StartServer.bat=!PORT_SRVR!
ECHO client\Azk2Clnt.ini=!PORT_CLNT!
start %CD%\client\Azk2Clnt.ini
goto exit
)
) ELSE (
ECHO Выполнение прервано:
ECHO не найден файл
ECHO StartServer.bat
goto exit
)
) ELSE (
ECHO Выполнение прервано:
ECHO не найден файл
ECHO client\Azk2Clnt.ini
goto exit
)
)
) ELSE (
IF EXIST client\order.exe (
TITLE && ECHO [АЦК-Госзаказ] запускается ...
IF EXIST client\order.ini (
FOR /F "tokens=2 delims=:" %%a IN ('findstr /B /I /P /C:"Server=localhost:" client\order.ini') DO (
SET PORT_CLNT=%%a
)
IF EXIST StartServer.bat (
FOR /F "tokens=2 delims==" %%a IN ('findstr /B /I /P /C:"set SERVER_PORT=" StartServer.bat') DO (
SET PORT_SRVR=%%a
)
IF "!PORT_SRVR!"=="!PORT_CLNT!" (
SET okstart=1
CD client
START order.exe /PREFIX:!PORT_CLNT! /CAPTION:"[!PORT_CLNT!]" %*
) ELSE (
ECHO Выполнение прервано:
ECHO не совпадают порты в файлах
ECHO StartServer.bat=!PORT_SRVR!
ECHO client\order.ini=!PORT_CLNT!
start %CD%\client\order.ini
goto exit
)
) ELSE (
ECHO Выполнение прервано:
ECHO не найден файл
ECHO StartServer.bat
goto exit
)
) ELSE (
ECHO Выполнение прервано:
ECHO не найден файл
ECHO client\order.ini
goto exit
) ) ELSE (
ECHO Выполнение прервано:
ECHO подсистема не распознана
)
)
) ELSE (
ECHO Выполнение прервано:
ECHO не удалось распознать подсистему, не найдены ни каталог "client", ни файл AzkExchange.exe
)
)
:exit
IF "%okstart%"=="1" (timeout 5) ELSE (pause)
ENDLOCAL
Подписаться на:
Сообщения (Atom)
Архив
-
►
2019
(44)
- декабря (2)
- октября (6)
- сентября (9)
- августа (1)
- июля (1)
- июня (2)
- мая (2)
- апреля (2)
- марта (2)
- февраля (9)
- января (8)
-
►
2018
(54)
- декабря (4)
- ноября (3)
- октября (6)
- сентября (4)
- августа (2)
- июля (2)
- мая (3)
- апреля (4)
- марта (11)
- февраля (6)
- января (9)
-
►
2017
(55)
- декабря (4)
- ноября (14)
- октября (1)
- сентября (3)
- августа (10)
- июля (2)
- июня (5)
- мая (2)
- апреля (3)
- марта (4)
- февраля (4)
- января (3)
-
►
2016
(111)
- декабря (12)
- ноября (4)
- октября (14)
- сентября (7)
- августа (7)
- июля (14)
- июня (12)
- мая (8)
- апреля (5)
- марта (16)
- февраля (10)
- января (2)
-
►
2015
(96)
- декабря (2)
- ноября (4)
- октября (3)
- сентября (6)
- августа (2)
- июля (2)
- июня (2)
- мая (11)
- апреля (14)
- марта (24)
- февраля (21)
- января (5)
-
►
2014
(72)
- декабря (18)
- ноября (16)
- октября (2)
- сентября (7)
- августа (4)
- июля (1)
- июня (4)
- мая (5)
- апреля (3)
- марта (3)
- февраля (6)
- января (3)
-
►
2013
(33)
- декабря (3)
- ноября (2)
- октября (3)
- сентября (2)
- августа (1)
- июля (1)
- июня (2)
- мая (5)
- апреля (2)
- марта (2)
- февраля (1)
- января (9)
-
►
2012
(181)
- ноября (6)
- октября (11)
- сентября (6)
- августа (5)
- июля (6)
- июня (25)
- мая (24)
- апреля (14)
- марта (20)
- февраля (38)
- января (26)