AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-111103

NarūnasK's questions

Martin Hope
NarūnasK
Asked: 2020-01-13 14:25:45 +0800 CST

Como manter o shell interativo após a conclusão do bash -c?

  • 1

Eu tenho um script de brinquedo que imprime $SHLVLe as configurações de invocação do shell:

$ cat tst.sh 
echo "Level: $SHLVL"
echo "Options: $-"

Se eu sourceestiver no shell atual, ele funcionará como esperado:

$ source tst.sh 
Level: 1
Options: himBHs

Se estiver sourcedno sub-shell, novamente nada muito emocionante:

$ /bin/bash
$ source tst.sh 
Level: 2
Options: himBHs

Executá-lo com a -cconfiguração me deu uma saída ligeiramente diferente:

$ /bin/bash -c 'source tst.sh'
Level: 2
Options: hBc

Portanto, forneci as opções ausentes:

$ /bin/bash -sic 'source tst.sh'
Level: 2
Options: himBHcs

Observe que toda vez que tenho sourcedmeu script usando a -cconfiguração, após a conclusão do último comando no script, o sub-shell saiu. Isso é algo que eu gostaria de evitar, portanto, após o último comando no script, devo permanecer no interactivesub-shell.

Basicamente, gostaria de replicar a seguinte sequência de etapas, mas usando -c:

$ /bin/bash
$ source tst.sh
bash shell
  • 1 respostas
  • 153 Views
Martin Hope
NarūnasK
Asked: 2019-12-19 07:57:02 +0800 CST

SSH ProxyJump aplica nome de usuário errado

  • 2

Dado o seguinte ssh.cfg:

Host bastion
  Hostname xx.yyy.169.100
  User ubuntu
  IdentityFile ./the-key.pem

Host 10.250.*.*
  ProxyJump %r@bastion
  User core
  IdentityFile ./the-key.pem

A tentativa de se conectar ao servidor por meio do bastionestá falhando, porque o ssh aplica o nome de usuário errado:

$ ssh -vvF ssh.cfg 10.250.198.76
...
debug1: Reading configuration data ssh.cfg
debug1: ssh.cfg line 1: Applying options for bastion
debug2: resolve_canonicalize: hostname xx.yyy.169.100 is address
debug2: ssh_connect_direct
debug1: Connecting to xx.yyy.169.100 [xx.yyy.169.100] port 22.
debug1: Connection established.
debug1: identity file ./the-key.pem type -1
debug1: identity file ./the-key.pem-cert type -1
debug1: Local version string SSH-2.0-OpenSSH_7.9
debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.3
debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.3 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_7.5*,OpenSSH_7.6*,OpenSSH_7.7* compat 0x04000002
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to xx.yyy.169.100:22 as 'core'
...

Eu esperava que o ssh aplicasse o ubuntuusuário quando estiver se conectando ao bastião e só aplicaria coreo usuário quando estiver se conectando ao servidor de destino.

Tem como configurar do jeito que eu quero?

ssh openssh
  • 1 respostas
  • 2537 Views
Martin Hope
NarūnasK
Asked: 2019-05-15 11:56:10 +0800 CST

Como usar TOKENS com a diretiva ssh LocalForward?

  • 1

Com o seguinte ssh_config:

Match all
  IdentityFile /opt/ssh/id_rsa
  StrictHostKeyChecking no
  ServerAliveInterval 30
  ServerAliveCountMax 3
  ControlMaster auto
  ControlPersist 300
  StreamLocalBindMask 0111
  StreamLocalBindUnlink yes
  ExitOnForwardFailure yes
  Compression yes
  BatchMode yes

Host example
  LocalForward /opt/ssh/soc/%n_mysql.socket 127.0.0.1:3306
  ControlPath /opt/ssh/soc/%n.socket
  HostName example.com
  User user
  Port 22

Dois unix-socketarquivos são criados:

# ls -1 /opt/ssh/soc
example.socket
%n_mysql.socket

Obviamente LocalForward, a diretiva não gosta de tokens ...

Eu me pergunto por que e existe uma maneira alternativa de conseguir isso?

Vejo que LocalCommandaceita os seguintes tokens: %%, %C, %d, %h, %i, %l, %n, %p, %r, %T, e %u. Poderia ser de alguma forma usado para alcançar o que eu quero?

Eu tentei a seguinte configuração, mas ela apenas cria o ctrlsoquete, não o mysqlúnico.

Host example
  PermitLocalCommand yes
  LocalCommand ssh -F /opt/ssh/config -S /opt/ssh/sockets/%n.socket -TNL /opt/ssh/sockets/%n_mysql.socket:127.0.0.1:3306 -p %p -l %u %h
  ControlPath /opt/ssh/soc/%n.socket
  HostName example.com
  User user
  Port 22
ssh ssh-tunneling
  • 1 respostas
  • 475 Views
Martin Hope
NarūnasK
Asked: 2019-04-25 13:39:14 +0800 CST

Passando argumentos do script bash para a função no script

  • 4

Meu roteiro:

#! /bin/bash --

set -x

## docker-compose wrapper
compose_fn() {
  local ENV="${1}"
  local VERB="${2}"
  local SERVICE="${3}"
  local CMD="docker-compose -f ${ENV}.yml"
  case "${VERB}" in
    (exec)
      shift "$#" # remove args passed to this fn
      # Execute a command in a running container.
      if [ -n "${SERVICE}" ]; then
        ${CMD} "${VERB}" "${SERVICE}" "$@"
      else
        echo "## Err: You must specify service name..."
        exit 1
      fi
    ;;
  esac
}

compose_fn "${1}" "${2}" "${3}"

Está me dando uma dificuldade com o seguinte erro:

$ ./tst.sh dev exec django sh
+ compose_fn dev exec django
+ local ENV=dev
+ local VERB=exec
+ local SERVICE=django
+ local 'CMD=docker-compose -f dev.yml'
+ case "${VERB}" in
+ shift 3
+ '[' -n django ']'
+ docker-compose -f dev.yml exec django
Execute a command in a running container

Usage: exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]

Options:
....

Onde está o meu erro? Como isso pode ser feito melhor?

Até onde eu sei, passei 4 argumentos [dev, exec, django, sh]para o script e, dentro do script, removi 3 ( shift 3), portanto, shdeveria ter sido deixado no $@var.

bash shell-script
  • 1 respostas
  • 1600 Views
Martin Hope
NarūnasK
Asked: 2018-09-05 12:03:26 +0800 CST

Como acessar mais membros de uma matriz ao usar a indireção da variável bash?

  • 2

Considere o exemplo a seguir, parece que está funcionando bem com o índice 0:

$ a1=(1 2 3)
$ a2=(a b c)
$ for x in a1 a2; do echo "${!x}"; done
1
a
$ for x in a1 a2; do echo "${!x[0]}"; done
1
a

No entanto, com o índice 1, ele não imprime nada:

$ for x in a1 a2; do echo "${!x[1]}"; done    

Arrays por si só são bons:

$ echo "${a1[1]} ${a2[1]}"
2 b

Editar - Um caso de uso da vida real baseado na resposta do ilkkachu

SHIBB=(https://shibboleth.net/downloads/service-provider/3.0.2/ shibboleth-sp-3.0.2 .tar.gz)
XERCES=(http://apache.mirrors.nublue.co.uk//xerces/c/3/sources/ xerces-c-3.2.1 .tar.gz)
XMLSEC=(http://apache.mirror.anlx.net/santuario/c-library/ xml-security-c-2.0.1 .tar.gz)
XMLTOOL=(http://shibboleth.net/downloads/c++-opensaml/latest/ xmltooling-3.0.2 .tar.gz)
OPENSAML=(http://shibboleth.net/downloads/c++-opensaml/latest/ opensaml-3.0.0 .tar.gz)

typeset -n x
for x in XERCES XMLSEC XMLTOOL OPENSAML SHIBB; do
  url="${x[0]}" app="${x[1]}" ext="${x[2]}"
  [ -f "./${app}${ext}" ] || wget "${url}${app}${ext}"
  tar -xf "./${app}${ext}"
  cd "./${app}" && ./configure && make -j2 && make install && ldconfig
  cd ..
done
bash bash-expansion
  • 1 respostas
  • 88 Views
Martin Hope
NarūnasK
Asked: 2017-12-31 13:36:30 +0800 CST

Qual variante do ssh "jump host" devo usar?

  • 3

Existem pelo menos 3 variantes de sshconfiguração conhecidas por mim que permitem jump_hosto uso para se conectar ao target_host:

Host jump_host
  HostName 1.2.3.4

# Variant - 1
Host target_host
  HostName 172.16.0.1
  ProxyCommand ssh -q -x jump_host 'netcat %h 22'

# Variant - 2
Host target_host
  HostName 172.16.0.1
  ProxyCommand ssh -q -x jump_host -W '%h:22'

# Variant - 3
Host target_host
  HostName 172.16.0.1
  ProxyJump jump_host

Algum desses métodos é de alguma forma melhor que os outros? Qual é a diferença (se houver) entre as configurações 2 e 3? Obviamente, a configuração 1 requer ter netcatem mãos, por isso é menos atraente.

ssh
  • 1 respostas
  • 2197 Views
Martin Hope
NarūnasK
Asked: 2017-12-07 05:24:42 +0800 CST

Diretiva Preseed para pular outra varredura de CD/DVD

  • 6

Por favor, veja a imagem abaixo, existe uma preseeddiretiva para pular esta Debian9etapa do instalador?

Atualmente eu uso a seguinte configuração relevante para o gerenciador de pacotes:

### Apt setup
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
d-i apt-setup/local0/source boolean true

### Package selection
tasksel tasksel/first multiselect standard

### Mirror settings
d-i mirror/country string manual
d-i mirror/http/hostname string httpredir.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string

Instalador Debian9

debian debian-installer
  • 1 respostas
  • 4064 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve