Как выполнить несколько строк кода внутри SSH в скрипте Bash

Только root может создавать каталоги в / home . Обычно вы помещаете каталог в / home для каждой учетной записи пользователя. Выполнение команды getent passwd покажет вам, у каких пользователей есть домашние каталоги, расположенные здесь:

$ getent passwd | grep /home
saml:x:1000:1000:saml:/home/saml:/bin/bash
samtest:x:1001:1001::/home/samtest:/bin/bash

Также вы обычно не делаете эти каталоги вручную, а используете такой инструмент, как adduser для создания новых учетных записей пользователей и с их помощью указать подкаталоги, которые необходимо создать для пользователя в папке / home .

$ sudo adduser
  -d, --home-dir HOME_DIR       home directory of the new account

Если вы действительно хотите создать подкаталог в / home для использования каким-то ранее существующим пользователем, в дополнение к их уже существующему каталогу / home , вы можете сделать это вот так:

$ sudo mkdir /home/somedir
$ sudo chown -R myuser.somegroup /home/somedir

Если вы просто пытаетесь создать каталог в каталоге вашего пользователя / home / user , то сделайте это, используя один из следующих методов:

$ mkdir ~/testDir
$ mkdir $HOME/testDir
$ mkdir /home/harbir/testDir
$ cd /home/harbir; mkdir testDir
0
24.01.2019, 19:44
2 ответа

Используйтеhttps://www.shellcheck.net/(плагин vim )Это скажет вам

Line 18:
  EOF
 ^-- SC1039: Remove indentation before end token (or use <<- and indent with tabs).

Затем переходите к перечислению многих других вопросов.

0
28.01.2020, 04:03

Вы пытаетесь сохранить массив значений в iplist[@], но как статическое объявление...

Попробуйте следующее:

#!/bin/bash
cassandra_home=(`python -c "import json; print \",\".join(json.load(open('${repair.json}','r'))[\"cassandra_home\"])"`)
iplist[@]=(`python -c "import json; print \",\".join(json.load(open('${repair.json}','r'))[\"iplist\"])`)
for ip in ${iplist[@]}
do
  sudo ssh -t root@$ip "
    for ip in ${iplist[@]} 
    do
      echo Checking $ip for ongoing repairs
      ${cassandra_home}nodetool -h $ip tpstats | grep Repair#
      response=$?
      if [ $response -eq 0 ]; then
        repair_ongoing=true
        echo \"Ongoing repair on $ip\"
      fi
    done 
    if ! [ $repair_ongoing ]; then
      ## echo \"Taking a snapshot.\"
      ## ${cassandra_home}bin/nodetool -h $ip snapshot
      echo \"Starting repair on $ip\"
      start=`date +%s`
      ${cassandra_home}bin/nodetool -h $ip repair -pr -inc -local metadata
      sleep 3
      ${cassandra_home}bin/nodetool -h $ip cleanup metadata 
      end=`date +%s`
      #echo \"ks.tab,st,et,last run,status\">>repair_status.csv
      echo \"Repair and cleanup completed for metadata in $end - $start seconds\"
    fi
    exit 0"

done   
0
28.01.2020, 04:03

Теги

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