Help Linux

Decat asa, cred ca e mai simplu sa am un stick USB dedicat pentru Daphile si de cate ori vreau doar sa ascult muzica sa il infig si sa pornesc HTPC-ul...
Fiind de la 0 probabil ca o sa incerc si varianta cu instalare pe HDD pentru dual-boot, sper doar sa nu stric iremediabil SSD-ul, sa mai pot boota de pe el vreodata... :goofy:
 
Am o problema cu un shell intr-un Linux. Spre deosebire de Marius'95 cu BSD-ul, eu chiar nu stiu ce versiune e acel Linux, dar pot spune ce vad eu pe-acolo si ce se intampla.

Deci: exista un folder pe acest server care genereaza niste loguri in fisiere text, aproape 2000 de fisiere zilnic; ceea ce vreau eu e sa iau acele fisiere pe un calculator cu Windows si sa le import intr-o baza de date. Am incercat sa le copiez cu WinSCP, din cauza ca sunt mici si multe dureaza foarte mult timp (vreo ora, parca), asa ca am gasit in documentatia WinSCP instructiuni despre cum pot scrie un script care sa arhiveze fisierele intr-un singur .tar.gz pe care sa il copiez si sa il sterg dupa aceea. Operatiunea e extrem de rapida, cateva secunde arhivarea si zeci de secunde copierea, asa ca mi se pare o idee excelenta.

Ce merge: ma pot conecta cu WinSCP si pot copia fisierele si din folderul original /var/opt/gsss/data/activityTraceLogs/LogFiles si din /tmp unde fac arhiva temporara. Pot sa ma conectez cu PuTTY si sa rulez comanda de arhivare (tar -czf /tmp/archive.tar.gz *.* ) si merge perfect.

Ce nu merge: am incercat sa fac asta ori ca script in WinSCP, ori direct dintr-un mic program C# in console mode (linie de comanda) cu WinSCP .NET assemblies pe care l-am scris doar ca sa leg toate operatiunile intr-un singur limbaj (arhivarea, poi copierea, apoi dezarhivarea, apoi importul in SQL cu BULKCOPY dar cu verificare daca fisierul a mai fost procesat vreodata ca sa nu import de 2 ori). Rezultatul e acelasi, la comanda de arhivare se inchide sesiunea de catre server si tot ce am e ceea ce scrie in loguri sau ca output pe ecran.

Log WinSCP:
Code:
. 2015-11-28 13:47:03.095 Startup conversation with host finished.
< 2015-11-28 13:47:03.095 Script: Active session: [1]xxxxxx@yyyyyyyy
> 2015-11-28 13:47:03.095 Script: cd /var/opt/gsss/data/portalActivityTraces/LogFiles
. 2015-11-28 13:47:03.095 Cached directory change via "/var/opt/gsss/data/portalActivityTraces/LogFiles" to "/var/opt/gsss/data/portalActivityTraces/LogFiles".
. 2015-11-28 13:47:03.095 Getting current directory name.
< 2015-11-28 13:47:03.095 Script: /var/opt/gsss/data/portalActivityTraces/LogFiles
> 2015-11-28 13:47:03.095 Script: call tar -czf /tmp/archive.tar.gz *.*
< 2015-11-28 13:47:03.095 Script: Searching for host...
. 2015-11-28 13:47:03.095 [Shell] Looking up host "yyyyyyyy"
. 2015-11-28 13:47:03.298 [Shell] Connecting to zzz.zzz.zzz.zzz port 22
< 2015-11-28 13:47:03.455 Script: Connecting to host...
. 2015-11-28 13:47:03.610 [Shell] Server version: SSH-2.0-OpenSSH_5.5
. 2015-11-28 13:47:03.610 [Shell] Using SSH protocol version 2
. 2015-11-28 13:47:03.610 [Shell] We claim version: SSH-2.0-WinSCP_release_5.7.6
. 2015-11-28 13:47:03.766 [Shell] Doing Diffie-Hellman group exchange
. 2015-11-28 13:47:04.095 [Shell] Doing Diffie-Hellman key exchange with hash SHA-256
. 2015-11-28 13:47:05.139 [Shell] Verifying host key rsa2 bla-bla with fingerprint ssh-rsa 2048 bla-bla
< 2015-11-28 13:47:05.139 Script: Authenticating...
. 2015-11-28 13:47:05.139 [Shell] Host key matches cached key
. 2015-11-28 13:47:05.139 [Shell] Host key fingerprint is:
. 2015-11-28 13:47:05.139 [Shell] ssh-rsa 2048 bla-bla
. 2015-11-28 13:47:05.139 [Shell] Initialised AES-256 SDCTR client->server encryption
. 2015-11-28 13:47:05.139 [Shell] Initialised HMAC-SHA1 client->server MAC algorithm
. 2015-11-28 13:47:05.139 [Shell] Initialised AES-256 SDCTR server->client encryption
. 2015-11-28 13:47:05.139 [Shell] Initialised HMAC-SHA1 server->client MAC algorithm
! 2015-11-28 13:47:05.483 [Shell] Using username "xxxxxx".
< 2015-11-28 13:47:05.483 Script: Using username "xxxxxx".
. 2015-11-28 13:47:05.655 [Shell] Attempting keyboard-interactive authentication
. 2015-11-28 13:47:05.811 [Shell] Prompt (keyboard interactive, "SSH server authentication", "Using keyboard-interactive authentication.", "Password: ")
. 2015-11-28 13:47:05.811 [Shell] Using stored password.
< 2015-11-28 13:47:05.811 Script: Authenticating with pre-entered password.
. 2015-11-28 13:47:05.968 [Shell] Prompt (keyboard interactive, "SSH server authentication", <no instructions>, <no prompt>)
. 2015-11-28 13:47:05.968 [Shell] Ignoring empty SSH server authentication request
. 2015-11-28 13:47:06.125 [Shell] Access granted
. 2015-11-28 13:47:06.125 [Shell] Opening session as main channel
. 2015-11-28 13:47:06.265 [Shell] Opened main channel
. 2015-11-28 13:47:06.606 [Shell] Started a shell/command
< 2015-11-28 13:47:06.606 Script: Authenticated.
. 2015-11-28 13:47:06.606 [Shell] --------------------------------------------------------------------------
. 2015-11-28 13:47:06.606 [Shell] Using SCP protocol.
. 2015-11-28 13:47:06.606 [Shell] Doing startup conversation with host.
< 2015-11-28 13:47:06.606 Script: Starting the session...
. 2015-11-28 13:47:06.606 [Shell] Skipping host startup message (if any).
> 2015-11-28 13:47:06.606 [Shell] echo "WinSCP: this is end-of-file:0"
< 2015-11-28 13:47:06.623 [Shell]                                                                           
< 2015-11-28 13:47:06.623 [Shell] *****************************************************************************
< 2015-11-28 13:47:06.623 [Shell] * This is a private computer/communication system.  Access to it for any    *
< 2015-11-28 13:47:06.623 [Shell] * reason must be specifically authorized.  If you are not authorized, your  *
< 2015-11-28 13:47:06.623 [Shell] * continued access and further inquiry may expose you to criminal and/or    *
< 2015-11-28 13:47:06.623 [Shell] * civil proceedings.  System personnel will/may monitor this system for     *
< 2015-11-28 13:47:06.623 [Shell] * unauthorized activity, misuse, and to evaluate system performance.        *
< 2015-11-28 13:47:06.623 [Shell] * Anyone using this system expressly consents to such monitoring            *
< 2015-11-28 13:47:06.623 [Shell] * Software must not be installed on this computer/communication system      *
< 2015-11-28 13:47:06.623 [Shell] * without a purchased and documented license approved by the Company's      *
< 2015-11-28 13:47:06.623 [Shell] * licensing process.  Failure to comply could expose you and/or the Company *
< 2015-11-28 13:47:06.623 [Shell] * to legal proceedings                                                      *
< 2015-11-28 13:47:06.623 [Shell] *****************************************************************************
< 2015-11-28 13:47:06.685 [Shell] Last login time was Nov 28 06:44 !!!
< 2015-11-28 13:47:06.935 [Shell] WinSCP: this is end-of-file:0
. 2015-11-28 13:47:06.935 [Shell] Detecting variable containing return code of last command.
. 2015-11-28 13:47:06.935 [Shell] Trying "$status".
> 2015-11-28 13:47:06.935 [Shell] echo "$status" ; echo "WinSCP: this is end-of-file:0"
! 2015-11-28 13:47:07.075 [Shell] -bash: line 2: status: unbound variable
< 2015-11-28 13:47:07.075 [Shell] logout
. 2015-11-28 13:47:07.091 [Shell] Server sent command exit status 1
. 2015-11-28 13:47:07.091 [Shell] Disconnected: All channels closed
< 2015-11-28 13:47:07.091 Script: Connection has been unexpectedly closed. Server sent command exit status 1.
< 2015-11-28 13:47:07.091 Script: Error detecting variable containing return code of last command.
. 2015-11-28 13:47:07.091 Script: Failed
. 2015-11-28 13:47:07.091 Script: Exit code: 1
. 2015-11-28 13:47:07.091 Closing connection.
. 2015-11-28 13:47:07.091 Sending special code: 12
. 2015-11-28 13:47:07.091 Sent EOF message
Output pe ecran din C#: e similar cu ce spune WinSCP, dar mult mai slab ca explicatii, e doar pentru confirmarea ca pare sa fie aceeasi problema.
Code:
Error: WinSCP.SessionRemoteException: Connection has been unexpectedly closed. Server sent command exit status 1. ---> WinSCP.SessionRemoteException: Error detecting variable containing return code of last command.
   --- End of inner exception stack trace ---
   at WinSCP.OperationResultBase.Check()
   at LogsImport.Program.DownloadFiles(String localPath)

Scriptul in WinSCP; repet, rulate manual toate comenzile merg, mai putin acel "call tar .." pe care il rulez in PuTTY si merge.
Code:
option batch abort
option confirm off
open xxxxxx:pppppppp@yyyyyy
cd /var/opt/gsss/data/portalActivityTraces/LogFiles
call tar -czf /tmp/archive.tar.gz *.*
lpwd
get -delete /tmp/archive.tar.gz
exit
 
Incearca sa faci un script (shell script) care sa faca arhivarea, script pe care sa-l lanseze WinSCP.

P.S. Nu e suficient tar -czf /tmp/archive.tar.gz *, fara "*.*"?
 
Last edited:
E ceva configurat ciudat pe server sau în winscp?

Am rulat
Code:
open miahi@192.168.37.129
call tar czvf /tmp/test.tgz /var/log/Xorg.0.log > /tmp/test.log 2>&1
lpwd
get -delete /tmp/test.tgz
get -delete /tmp/test.log
exit
și merge
Code:
c:\tools>winscp.com /script=test.scp
Searching for host...
Connecting to host...
Authenticating...
Using username "miahi".
Authenticating with pre-entered password.
Authenticated.
Starting the session...
Session started.
Active session: [1] miahi@192.168.37.129
Searching for host...
Connecting to host...
Authenticating...
Using username "miahi".
Authenticating with pre-entered password.
Authenticated.
Starting the session...
Session started.
C:\eunis\21513
test.tgz  |  132 KB |  0.0 KB/s | binary | 100%
test.log  |  64 B |  0.0 KB/s | binary | 100%



c:\tools>dir c:\eunis\21513\test*
Volume in drive C is BootSSD
Volume Serial Number is 7893-7BCF

Directory of c:\eunis\21513

10/20/2015  04:53 PM  64 test.log
10/20/2015  04:53 PM  135,467 test.tgz
  2 File(s)  135,531 bytes
  0 Dir(s)  40,380,928,000 bytes free

Am atașat și rezultatul de la
Code:
winscp.com /script=test.scp /log=test.log /loglevel=2
 

Attachments

WinSCP nu are nimic ciudat configurat, e unul portabil, proaspat descarcat si dezarhivat cu care m-am logat de cateva ori ca sa salvez cached keys si cu care am testat ca interactiv merge treaba.

Incearca sa faci un script (shell script) care sa faca arhivarea, script pe care sa-l lanseze WinSCP.
Pai credeam ca asta si fac :biggrin: Intrucat arhivarea dureaza un pic (in teste am luat logurile pe mai mult de o saptamana, vreo 1.5 GB), e important ca WinSCP sa nu incerce sa descarce arhiva inainte de a fi gata, deci trebuie sa faca totul sincron, secvential. WinSCP cand da de acel "call tar ..." incearca sa faca el automat un shell in care sa il ruleze, din ce inteleg. Nu stiu in schimb ce nu ii place serverului, ca prin PuTTY e prietenos si nu comenteaza la nimic.
 
Last edited:
Redirectează output-ul de la tar (vezi redirect-urile mele, 2>&1 e important) și fără cd:
Code:
call /bin/tar -czvf /tmp/archive.tar.gz /var/opt/gsss/data/portalActivityTraces/LogFiles/*.* > /tmp/archive.log 2>&1
Și pe urmă verifici în /tmp/archive.log ce a făcut de fapt.

Chestia e că am încercat să fac tar-ul să crape, și atunci când crapă, eroarea e clară și scrisă în consola winscp-ului:
Code:
tar: yum.log-20150713: Cannot open: Permission denied
tar: Exiting with failure status due to previous errors.
 
Nu ajunge sa ruleze tar, dupa ce face shell si se autentifica se deconecteaza. Problema pare a fi in partea post-autentificare fix inainte de a rula tar.
 
Da, m-am uitat mai atent în log-uri; pare că winscp nu se descurcă cu nounset.

Ia dă-i din putty un
Code:
set -o
și vezi ce zice la nounset și errexit (probabil on la ambele).

Dacă-s on dă-i
Code:
set +o nounset
set +o errexit
și vezi dacă se setează pe off (ar trebui).

Va trebui să bagi în script-ul de login al utilizatorului chestiile astea (bash_profile) și să încerci din nou cu winscp-ul.
 
errexit e pe off, nounset pe on. Pot pune nounset pe off, dar e numai pe durata sesiunii. Cum pot sa fac sa ramana pe off? Am gasit ceva cu Google, touch ~/.bash_profile; open ~/.bash_profile, dar imi spune ca nu am drepturi: touch: cannot touch `/home/ah1883/.bash_profile': Permission denied.
 
Uită-te în .bash_profile și vezi dacă execută vreun script pe-acolo, și dacă da, pune-l în interiorul acelui script (ăsta e un început de hacking). Altfel trebuie să vorbești cu adminul să-ți scoată bălăria.
 
Cum fac un reverse proxy HTTPS to HTTPS in Apache?

In limbaj mai uman, cum fac ca cererile HTTPS catre un server S1 sa fie servite prin S1 dar din alta parte, mai exact de pe S2, iar comunicatia intre S1 si S2 sa fie tot HTTPS? Tot ce vede utilizatorul e S1 si certificatul lui S1, dar tot continutul vine de pe S2. HTTPS intre S1 si S2 e necesar doar pentru ca trece prin Internet fara nici un fel de criptare si HTTPS e mai usor de implementat in cazul meu particular decat un VPN intre servere.

Am gasit raspunsurile lui Google la intrebarea cum fac reverse proxy la HTTPS catre un HTTP, dar nu e suficient.
 
Vezi aici o configurație cu terminare SSL în Apache (aproape ce vrei tu, și anume ssl intre S1 și S2 dar clar între utilizator și S1): http://serverfault.com/questions/84821/apache-proxypass-with-ssl

Mai trebuie doar să adaugi SSL-ul de "S1" și un pic de jonglerie cu mod_rewrite și portofelul de certificate al lui S1 (ca să accepte certificatul lui S2, dacă e self-signed).

Pe S1 oricum cererile vor fi decriptate (ce zice maxu), pentru că poți să ai mod_rewrite și alte chestii mai ciudate. Dacă ajung la S2 sesiuni SSL direct de la utilizatori (ne-decriptate până atunci), înseamnă că nu mai folosești cheia lui S1.
 
Incearca sa faci un script (shell script) care sa faca arhivarea, script pe care sa-l lanseze WinSCP.

P.S. Nu e suficient tar -czf /tmp/archive.tar.gz *, fara "*.*"?
Buna idee, am facut asta din nimereala: am citit undeva ca pot face putty sa ruleze un script care e fix tar .../exit si pe care il rulez nu din WinSCP, ci din programelul C# care agrega toata inlantuirea de operatii: putty, WinSCP, bulkload, script SQL de curatat (sters balarii) pot import. Problem solved, in cea mai mare parte.
 
Back
Top