VirtualBox имеет достаточно широкий функционал командной строки.

Запустить виртуальную машину (ну например test_vm) без открытия экрана
VBoxManage startvm "test_vm" --type headless
или
VBoxHeadless --startvm "test_vm"

Остановить
VBoxManage controlvm "test_vm" acpipowerbutton

Сохранить текущее состояние на диск и выключить питание
VBoxManage controlvm test_vm savestate

Посмотреть информацию и свойства ВМ
VBoxManage showvminfo test_vm
VBoxManage guestproperty enumerate test_vm
VBoxManage guestproperty get test_vm "/VirtualBox/GuestInfo/OS/Product"

Выполнить команду на ВМ
VBoxManage --nologo guestcontrol test_vm run --exe "/bin/ls" --username osboxes --password passwd123 --wait-stdout -- -c -l /home/osboxes

Расшарить папку с хоста на гостевую ВМ
VBoxManage sharedfolder add mint0 --name "TEMP" --hostpath "c:\temp" --transient
и посмотреть на госте расшареные ему папки:
# VBoxControl sharedfolder list
Oracle VM VirtualBox Guest Additions Command Line Management Interface Version 4.3.18_Debian
(C) 2008-2015 Oracle Corporation
All rights reserved.
Shared Folder mappings (1):
01 - TEMP

Ну и ссылки в тему:

Срочно нужно поднять httpd? Ну там отдать на скачивание что-нибудь, простой скрипт толкнуть, для инсталлятора подсунуть диски, да мало ли для чего нужно вэб-сервер?

Запускаем вэб-сервер в одну строку
$ python -m CGIHTTPServer 8000 >/tmp/httpd.log 2>&1 &

Поднимает сервер на порту 8000 с каталога, в котором запущен, исполняет скрипты из каталога cgi-bin и htbin

Upadate 2020-02-15
Для python3 используется другой модуль
$ python -m http.server 8000 >/tmp/httpd.log 2>&1 &

Просто VNC

05.01.2016

Для того чтобы под unix удаленно запустить X приложение нужно определить переменную DISPLAY и запустить на локальном компьютере X-Server (VcXsrv или любой другой). Если при этом упадет сеть, то приложение тоже падает, теряются данные и прочие проблемы.
Старый и эффективный выход из этого положения — установить vnc-сервер и соединятся с ним с любого места, не боясь потери данных, «порывов» и просто заметно быстрее, чем через X-сервер. Можно, например, запустить firefox на удаленном серваке и спокойно серфиться, можно запустить виртуалку и соединяться с ней, когда нам нужно, ну итд

  1. устанавливаем на сервере vnc-сервер, например, vnc4server или tightvncserver
    # apt-get update
    # apt-get install vnc4server
  2. запускаем его без параметров — при первом запуске он запрашивает пароль для доступа.
  3. устанавливаем на сервере переменную DISPLAY, запускаем vnc-сервер и запускаем любое X-приложение
    # export DISPLAY=localhost:12
    # vnc4server :12
    # xterm &
  4. соединяемся с помощью vnc-viewer (любой клиент под любой платформой, например TightVNC Viewer или любой другой)
    vnc viewer
  5. прибить vnc можно командой
    # vnc4server -kill :12

Ссылки в тему:

Установка параметров загрузки ядра в Linux grub2:

  1. Определяемся с параметрами
  2. Меняем строчку GRUB_CMDLINE_LINUX в /etc/default/grub типа:
    GRUB_CMDLINE_LINUX_DEFAULT=’quiet acpi=off’
  3. # update-grub

Отключить неугодный драйвер устройства :

  1. # lsmod
  2. # lspci -v
  3. Добавить строку «blacklist driver-name» в /etc/modprobe.d/blacklist (или /etc/modprobe.d/blacklist.conf или еще какой-нибудь файл в этом каталоге)
  4. # depmod -ae
  5. # update-initramfs -u

Ссылки в тему:

Итак, проект find.unixpin.com переехал на новый домен www.clihelper.com

Напомню: напоминалка опций через web-интерфейс, позволяет быстро и без головняков с man-ами вспомнить забытые (или узнать новые) опции для cli команд. Сейчас в наличии grep, find, fuser, wc. Постараюсь оперативно  выкладывать новые напоминалки.

Итак, версии на русском и английском.

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

На многих почтовых серверах в целях безопасности запрещена пересылка писем от не авторизованных пользователей.  Т.е. если мы хотим получать письма от рутов наших любимых серверов, в поле отправителя будет стоять что-то типа root@hostname.domain.ru и письмо скорее всего не дойдет до адресата. А нам во что бы то ни стало надо это письмо обязательно получить (хотя и не обязательно мы его будем читать но получить надо;)) Единственный выход в данной ситуации — это изменить адрес отправителя на существующий адрес на почтовом сервере, например Vasily.Pupkin@domain.ru.

Конечно можно не заморачиваться с sendmail и использовать любой другой mail transfer agent либо почтовый клиент, в котором можно прописать все что угодно, но есть софт, который упорно использует только sendmail и ничего более. Вот для таких случаев и написана данная инструкция.

Итак:

Читать полностью »

Обычно, когда заканчивается место на файловой системе — ищем растущие файлы (обычно это логи всякие) и удаляем их.
Итак, как правильно удалять файлы? ;)
Проверяем, что этот файл не открыт каким-нибудь процессом:
fuser /dir/filename

Если файл занят, что прибиваем процесс (или делаем корректные действия, чтобы процесс отпустил файл), после этого удаляем.

А что делать, если никто ничего не проверял, файлик грохнули, а вот место не освободилось?
Читать полностью »

Есть такой убойный сервис у Sun, называется Shared shell. Нужен для предоставления удаленного доступа к telnet-ssh сервисам по https.
Обычно используют RemoteAdmin или что-нибудь подобное, чтобы удаленно настроить приложения, но очень часто у клиентов зарезаны порты и вообще, доступ к интернету сильно ограничен. Это приложение позволяет обойти эти ограничения для настройки терминальных приложений.
Это java приложение, работает через всякие прокси, хорошо себя ведет на слабых каналах. Позволяет предоставить полный доступ к консоли или доступ только для просмотра, тут же есть чат с поддержкой русского языка, карандашик, которым можно выделить что-нибудь. Один человек создает сессию, соединяется по telnet или ssh. Затем, меню «Conference-Invite» получает ключ, который отправляете человеку, который присоединяется к вашей сессии. Весь интерфейс интуитивно понятен. Вообщем — швейцарский нож, рекомендую ;)
Shared shell

shared_shell_1

shared_shell_2

По мотивам стандартной документации Perlvar.

Считать целиком файл в переменную:

open (MOCK, $filename) or die "$!";
local $/;
# переопределяем встроенную переменную "разделитель строк" ($/ или $INPUT_RECORD_SEPARATOR или $RS)
$_ =<MOCK> ;    # захавать моск файл целиком
close (MOCK);

Напечатать содержимое массива:
@a=qw( 1 2fewf wf g ag f);
local $,="\n";
# переопределяем встроенную переменную "разделитель полей" ($, или $OUTPUT_FIELD_SEPARATOR или $OFS)
print @a;

Читать полностью »

И снова grep

05.08.2009

Иногда есть данные и шаблоны, и чтобы выбрать данные — обычно используют цикл, в котором грепают по шаблону. Но тут недавно внимательно перечитал man grep и нашел интересный момент ;) Можно в одну команду вывести список строк, которые попадают (или не попадают) под шаблон

cat data.txt
111
222
333
112
122
233
444

cat template.txt
2
1

/usr/xpg4/bin/grep -f template.txt data.txt
111
222
112
122
233

Или не попадают
/usr/xpg4/bin/grep -v -f template.txt data.txt
333
444

Для чего это можно использовать? Ну например, список новых томов в VxVM, список новых файлов в каталоге — удобно динамически формировать список и сравнивать его со старым списком.