Arquivo nº 1:
test1,1
test2,2
test3
Arquivo nº 2:
test2
test1
test4
Saída Desejada:
test4
Estou usando casca de peixe no CentOS8.
Eu gostaria de inserir o seguinte no arquivo.
function fish_title
echo "? AmericaN ?"
end
Mas ao tentar colá-lo no arquivo, vejo o seguinte:
function fish_title
echo " AmericaN "
end
Mesmo via cat
comando, ainda não consigo vê-lo.
Aqui está a saída de locale
e$TERM
❯ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
❯ echo $TERM
xterm-256color
Estou usando o Windows New Terminal para acessar meu CentOS
servidor e estou colando no arquivo usando CTRL+Vou SHIFT+INSERTou mouse
clique com o botão direito do mouse
O editor énano
#!/bin/bash
start(){
printf 'Real IP: %s\n' "$(curl -s ifconfig.co)"
set -- /etc/openvpn/ovpn_tcp/*.nordvpn.com.tcp.ovpn
shift $(( RANDOM % $# ))
screen -S vpn -dm openvpn "$1" # connect
sleep 5 # wait for connection
printf 'VPN IP: %s\n' "$(curl -s ifconfig.co)"
}
stop(){
screen -S vpn -X quit
pkill -f ovpn
}
status(){
printf 'Current IP: %s\n' "$(curl -s ifconfig.co)"
}
case "$1" in
start)
if screen -ls | grep -w vpn &> /dev/null; then
echo "VPN Already Connected";
status
else
start
fi
;;
stop)
stop
;;
*)
status
;;
esac
O bash
script anterior fornece a seguinte resposta caso seja vpn stop
digitado.
executar vpn stop
se houver conexão ativa vpn
:
[root@A ~]# vpn stop
Terminated
executar vpn stop
se não houver vpn
conexão ativa:
[root@A ~]# vpn stop
No screen session found.
Terminated
O que procuro alcançar é:
executar vpn stop
se houver conexão ativa vpn
:
[root@A ~]# vpn stop
VPN Connection Closed Successfully
executar vpn stop
se não houver vpn
conexão ativa:
[root@A ~]# vpn stop
There's No Active VPN Connection to stop it.
Eu tenho uma lista de *.ovpn
configuração dentro do diretório de/etc/openvpn/ovpn_tcp/
dentro desse diretório eu tenho um script bash chamadogo
inclua o código a seguir, que selecionará o servidor aleatório da lista e se conectará a ele.
#!/bin/bash
set -- *.nordvpn.com.tcp.ovpn
shift $(( RANDOM % $# ))
openvpn "$1"
Tentei criar um alias para chamar o script pelo seguinte.
alias vpn='bash /etc/openvpn/ovpn_tcp/go'
Mas continua me dando um erro
Options error: In [CMD-LINE]:1: Error opening configuration file: *.nordvpn.com.tcp.ovpn
Use --help for more information.
Mas se eu chamá-lo pelo seguinte alias, ele será executado sem nenhum problema.
alias vpn='cd /etc/openvpn/ovpn_tcp/ && bash go'
Normalmente, eu abro screen
a sessão para conectar-me vpn
e, em seguida, desvinculo-a e, assim que terminar, reanexo a ela e uso CTRL + C
para cancelar a vpn
conexão.
O que estou procurando é definir 2
aliases
1- alias para ligar a vpn sem precisar abrir screen
sessão ou ocupar o terminal atual e uma vez que a vpn conectada eu quero ter certeza que ela está conectada chamando curl ifconfig.co
para ver o arquivo IP
.
2- alias para desligar a vpn.
NOTA :
É possível impedir alias
que a VPN seja executada caso já estejamos conectados à VPN?
Estou tentando editar o seguinte script bash para conectar vpn
aleatoriamente a partir da lista de .ovpn
arquivos dentro do diretório.
Baixei os seguintes ovpn
arquivos donordvpn
Lista de configuração NordVPN OVPN
e aqui está o seguinte script bash:
#!/bin/bash
RANGE=200 #here will be total number of ovpn config files inside tcp directory.
number=$RANDOM
let "number %= $RANGE"
fname="$*.nordvpn.com.tcp.ovpn"
openvpn "$fname"
Meu problema é como escrever esta parte corretamentefname="$*.nordvpn.com.tcp.ovpn"
que permitirá que o script selecione um ovpn aleatoriamente e se conecte a ele.
O comando a seguir atinge meu objetivo ao obter o BTC
preço de uma troca específica.
curl -sS https://api.binance.com/api/v1/ticker/price?symbol=BTCUSDT | jq -r '.price'
a saída será para o momento, 7222.25000000
mas eu gostaria de obtê-lo7222.25
Eu tenho o Linux Centos 7 Server com o qual gostaria de sincronizar o diretório específico dropbox
em tempo real.
Por exemplo, digamos que eu tenha um diretório A
localizado em/var/www/html/A/
Eu gostaria de sincronizar esse diretório A
em dropbox
tempo real.
Já registei uma conta dropbox
mas não sei como iniciar a configuração agora.
você poderia me dirigir por favor?
ENTRADA
New,9,1
Old,11,0
RESULTADO
New,09,1
Old,11,0
Gostaria de anexar ao número 2 após o primeiro ,
caso, se for um dígito, gostaria de adicionar 0
antes do dígito como a saída mostrada.
Consegui isso usando awk
, mas perdi ,
como separador.
usando o seguinte comando
awk -F ',' '{if(length($2)==1)$2="0"$2;print $0}' inputfile
Entrada:
a-0;Password-1010;c-ss;d-fk;h-14;i-jawad;j-dd;[email protected];
a-7990:15:71;b-aa;c-1;Password-2020;h-iOS;[email protected];
Resultado:
[email protected],1010
[email protected],2020
meu arquivo de entrada é o mesmo que meu exemplo. eu gostaria de imprimir apenas o Email
e Password
diretamente com ,
separador.
cada linha no arquivo contém palavras estáveis de ;Email-
e;Password-
Eu tentei awk -F';' '{ print $8, $2 }'
, mas não vai dar meu alvo porque precisa de algumas modificações.
Arquivo 1:
19a9s
c9019
5777
Arquivo 2:
99a9s
89019
10919
Saída esperada
19a9s
89019
5777
Então , comece com file 1
a line#2
letra c
. que eu gostaria de usá-lo como condição se a linha começar com letra c
, então eu quero substituí-lo do segundo arquivo que éfile 2
Eu tentei com o seguinte, mas não consegui me dar a saída esperada:
awk '
NR == FNR{ #for lines in first file
S[NR] = $0 #put line in array `S` with row number as index
next #starts script from the beginning
}
/^c/{$0=S[FNR]}{ #for line stared with `c`
$0=S[++count] #replace line by corresponded array element
}
1 #alias for `print $0`
' file2 file1
Tenho o seguinte arquivo:
hello there. let's try&ACCT=1&bla bla bla&EX=1118&anything ss &SERIAL=1011&DEAL=NO
BLA BLA BLA&TOM=1&ACCT=2&LSLSLSLSL&none=1&EX=1218&lord=1&ok=1&SERIAL=201&flag=non
do qual preciso extrair os valores do campo de ACCT=
, EX=
e SERIAL=
para que a saída se torne:
1,11/18,1011
2,12/18,201
onde EX
é sempre um número de 4 dígitos onde eu quero inserir a /
como o caractere do meio.
Entrada:
1,1,10,1
2,1,10,3
3,0,10,1
Saída esperada:
1,1,10,1
2,1,10,3
Então, como imprimir linhas se o campo for número 2
e 3
repetido em outra linha.
Entrada:
{"case":"0901","emailed":"yes","vote":1,"accepted":"no"},
{"case":"0908","emailed":"yes","vote":8,1"accepted":"yes"},
{"case":"0911","emailed":"no","vote":10,1"accepted":"yes"},
{"case":"0090","emailed":"yes","vote":3,1"accepted":"no"},
Script Escrito para aceitar a entrada, mesmo que seja como o seguinte:
{"case":"0901","emailed":"yes","vote":1,"accepted":"no"},{"case":"0908","emailed":"yes","vote":8,1"accepted":"yes"},{"case":"0911","emailed":"no","vote":10,1"accepted":"yes"},{"case":"0090","emailed":"yes","vote":3,1"accepted":"no"},
Resultado
{'case': '0901', 'vote': 1, 'accepted': 'no', 'emailed': 'yes'}
{'case': '0090', 'vote': 3.1, 'accepted': 'no', 'emailed': 'yes'}
Lines Before: 4
Lines After: 2
4.1
Meu roteiro
import sys, re, ast
with open(sys.argv[1], 'r') as f:
items = ast.literal_eval(re.sub(r"(\d+),(\d+)", "\\1.\\2,", f.read().replace('\n','')))
sum = 0
for d in items:
if d['emailed'] == 'yes' and d['accepted'] == 'no':
sum += d['vote']
print(d)
print(sum)
Então, o que estou procurando é como editar meu script para contar o número de linhas fornecidas ao script before
e after
!
Entrada:
1,2,20,11
1,1,2018,111
Resultado:
1,02,20,11
1,01,18,111
eu gostaria de inserir 0
no campo número 2, que é o mês, caso seja um número único.
E deseja remover os primeiros 2 dígitos do campo número 3, que é o ano, caso sejam 4 números.
Entrada:
United+States
Resultado:
United States
Tentei várias vezes usando sed
sem sucesso.