сценарий bash для выполнения команды, но с другими данными, хранящимися в файле

Поскольку вы новый пользователь Linux, как сказал hschou, избегайте создания набора разделов. Это принесет вам только горе. Сначала освойтесь с Linux, затем поэкспериментируйте со схемами разбиения.

На данный момент, если честно, самый простой вариант для вас — начать сначала. Сделайте резервную копию всего, что вы хотите сохранить, и переустановите Ubuntu только с двумя разделами: swap и for / (все остальное).

Отвечая на ваш вопрос: нет, это уничтожило бы /usr. Например, если у вас есть что-то вроде этого:

-----------------------------
| sda1  | sda2              |
-----------------------------

И вы удаляете sda2, чтобы увеличить sda1, вы стираете все, что находится в sda2.

Теперь, если содержимое sda2 может поместиться в файловую систему в sda1, тогда можно будет сделать то, о чем вы просите, но это деликатная задача; не рекомендуется для новичков в Linux.

Для полноты вы не можете добавить пространство в начало раздела. Добавить можно только сзади. Например, используя тот же пример разбиения, если вы хотите удалить sda1, чтобы увеличить в него sda2, это вообще не сработает. Вам придется сделать резервную копию / восстановить, чтобы решить эту проблему.

В заключение, лучше всего переустановить Ubuntu.

0
21.11.2018, 23:56
2 ответа

Вы усложняете себе задачу, написав это как сценарий bash , который вызывает expect , а не записывает это как сценарий expect (или даже сценарий env ). Это означает, что для сотрудничества вам нужно получить 2 разные схемы цитирования. В tcl вы получаете доступ к параметрам командной строки через список $ argv

#!/usr/bin/env expect
set arg1 [lindex $argv 0]
if {$arg1 == "TEST"} {
    set user "xxx"
    set host "host1"
    set pass "testpass"
} elseif {$arg1 == "LIVE"} {
    set user "yyy"
    set host "host2"
    set pass "livepass"
} else {
    send_user "First parameter is not TEST or LIVE"
    exit 1
}

spawn scp "$user@$host:~/path/dir/some.log" /home/some.log

expect "yes/no)? " {send "yes\r" ; exp_continue} "Password"
send "$pass\r"

Наличие паролей в сценариях не очень хорошо, но, вероятно, лучше, чем передавать их в командной строке.

3
28.01.2020, 02:19

Поэтому при выполнении scp вам нужно передать имя хоста, пользователя и пароль в качестве аргументов:

expect -c " spawn scp "$1@$2:~/path/dir/some.log" /home/some.log
expect \"Password\" send \"$3\r\"

$1 означает первый аргумент, который вы вводите после выполнения скрипта ($2 - второй и так далее), поэтому если вы напишите:

./scp.sh username test password

То вы отправите в ваш скрипт:

expect -c " spawn scp "username@test:~/path/dir/some.log" /home/some.log
expect \"Password\" send \"password\r\"
1
28.01.2020, 02:19

Теги

Похожие вопросы