OpenOffice идет с unoconv программой для выполнения преобразований формата на командной строке.
unoconv -f csv filename.xlsx
Для более сложных требований можно проанализировать файлы XLSX с Spreadsheet::XLSX
в Perl или openpyxl
в Python. Например, вот беглый сценарий для распечатывания рабочего листа как разделенного от точки с запятой файла CSV (предупреждение: непротестированный, введенный непосредственно в браузере):
perl -MSpreadsheet::XLSX -e '
$\ = "\n"; $, = ";";
my $workbook = Spreadsheet::XLSX->new()->parse($ARGV[0]);
my $worksheet = ($workbook->worksheets())[0];
my ($row_min, $row_max) = $worksheet->row_range();
my ($col_min, $col_max) = $worksheet->col_range();
for my $row ($row_min..$row_max) {
print map {$worksheet->get_cell($row,$_)->value()} ($col_min..$col_max);
}
' filename.xlsx >filename.csv
Если Ваша система использует PAM, отказ входа в систему когда /etc/nologin
существует инициирован pam_nologin
модуль.
Можно пропустить pam_nologin
вызов для пользователей, соответствующих определенным критериям pam_succeed_if
. Например, если Вы хотите позволить пользователям войти adm
группа для входа в систему на текстовой консоли, даже если /etc/nologin
существует, добавьте следующую строку к /etc/pam.d/login
незадолго до строки с auth requisite pam_nologin.so
:
auth [default=ignore success=1] pam_succeed_if.so quiet user ingroup adm
Я не уверен, возможно ли переопределить /etc/nologin
создание/использование без злых шуток. Но для Вашей цели, можно использовать функцию как это:
off () {
touch /tmp/GOING-DOWN
sudo sh -c "sleep ${1-1} && [ -f /tmp/GOING-DOWN ] && /sbin/poweroff"
}
После перевхода в систему, удаляя файл /tmp/GOING-DOWN
предотвратит завершение работы.
править: Добавленный простой способ отменить завершение работы.
Ответ Жиля выше очень хорош, но обратите внимание, что "type" должен совпадать с типом pam_nologin.so. Так, например, в моей системе RHEL5:
account [default=1 success=ignore] pam_succeed_if.so quiet user ingroup nx
account required pam_nologin.so
...если бы я использовал auth, как запрашивал другой ответ, это не сработало бы.
.Я попробовал сегодня правило Райана и обнаружил, что ответы бота Гилса и Райана имеют "обратные" правила успеха / по умолчанию, nologin блокирует только nx-группу. Вот как я реализовал это правило (группа nx не блокируется nologin).
account [success=1 default=ignore] pam_succeed_if.so quiet user ingroup nx
account required pam_nologin.so
Версия ответа Райана Новосельски от Весы К. у меня работает, но строки в:
/etc/pam.d/sshd
не:
/etc/pam.d/login
В моем случае, я просто хочу UID 1000 в Ubuntu 14.04 LTS, чтобы разрешить вход через SSH.
# Disallow non-root logins when /etc/nologin exists.
account [success=1 default=ignore] pam_succeed_if.so quiet uid eq 1000
account required pam_nologin.so