Modificarea locatiei pentru fisierele temporare de backup in Plesk

La verificarea backup-ului realizat automat folosind Backup Manager din Plesk, se observa ca exista anumite mesaje de eroare de forma
Unable to make database dump. Error: Failed to exec mysqldump: Exit code: 5:

In paralel cu aceasta eroare, in interfata Plesk este afisat un mesaj de avertizare ca partitia /tmp este plina. Acest mesaj este trimis si pe email catre administratorul serverului.
The threshold of partition "/tmp" utilization has been exceeded

Coreland cele doua mesaje deducem ca backup-ul bazei de date nu s-a realizat tocmai din cauza spatiului insuficient al partitiei /tmp. Prin urmare, se incearca modificarea locatiei unde Plesk stocheaza fisierele temporare in vederea realizarii unui backup.

Pasii necesari pentru aceasta modificare sunt urmatorii:

  1. Conectare la server prin SSH
  2. Crearea unui folder in care vor fi stocate fisierele temporare:
    mkdir /var/plesk_backups
  3. Modificarea variabilei DUMP_TMP_D din fisierul /etc/psa/psa.conf asa incat sa indice spre locatia dorita
    # grep DUMP_TMP_D /etc/psa/psa.conf DUMP_TMP_D /var/plesk_backups
  4. Setarea drepturilor pentru folderul destinatie
    # chown psaadm:psaadm /var/plesk_backups
    # chmod 755 /var/plesk_backups
  5. Restartarea serviciului sw-cp-server
    # service sw-cp-server restart

Metoda este valabila pentru Plesk Obsidian 18.0.49.

Autologin in Windows 10

Pentru autentificarea automata in contul unui utilizator din Windows 10 se procedeaza in felul urmator:

  1. Se ruleaza comanda netplwiz.
  2. Se debifeaza optiunea User must enter a username and passowrd to use this computer.
  3. Se introduce numele de utilizator si parola contului pentru care se doreste autologin.
  4. OK

Daca optiunea User must enter a username and passowrd to use this computer nu este vizibila, atunci se ruleaza comanda de mai jos, dupa care se ruleaza din nou netplwiz.

reg ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v DevicePasswordLessBuildVersion /t REG_DWORD /d 0 /f

Analiza performantei si stabilitatii unui server MySQL folosind utilitarul mysqltuner

MySQLTuner este un script scris in Perl care permite analiza rapida a unei instalari MySQL si propune ajustarea unor parametri pentru cresterea performantei si stabilitatii acesteia.

In ultima versiune (1.7.19) MySQLTuner suporta aprox. 300 de indicatori pentru MySQL/MariaDB/Percona Server.

Este foarte important sa intelegeti pe deplin fiecare modificare pe care o faceti in configurarea serverului MySQL. Testati intotdeauna fiecare modificare pe un server de test si tineti cont ca fiecare imbunatatire poate sa influenteze negativ server-ul in alta parte.

De asemenea, este important ca server-ul MySQL sa functioneze de cel putin o zi pentru ca rezultatul analizei sa fie relevant. Rularea utilizatului mysqltuner pe un server proaspat restartat este complet inutila.

Cea mai simpla metoda de descarcare a utilitarului:

wget http://mysqltuner.pl/ -O mysqltuner.pl
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv

Pentru a rula utilitarul folositi comanda:

perl mysqltuner.pl

Mai multe detalii despre utilizarea mysqltuner gasiti pe pagina oficiala:
https://github.com/major/MySQLTuner-perl

Reinstalare GRUB2 in modul recovery

Dupa actualizarea grub2 pe un server CentOS, incarcarea sistemului se blocheaza imedat dupa POST fara sa afiseze vreun mesaj de eroare. Concluzia a fost ca o data cu actualizarea grub2 a fost deteriorat fie sectorul de boot (MBR), fie fisierul de configurarea /boot/grub2/grub.conf.

Pentru remedierea situatiei au fost urmati pasii urmatori:

  1. Se porneste sistemul folosind DVD-ul de instalare CentOS (7.5), iar la pornire se va alege optiunea Troubleshooting, apoi Rescue a CentOS Linux system.
  2. Dupa pornirea interfetei de recovery se va alege optiunea 1 (Continue) pentru identificarea instalarii actuale a sistemului de operare si montarea lui sub /mnt/sysimage
  3. chroot /mnt/sysimage
  4. Montarea DVD-ului de instalare CentOS:
    mkdit /test
    blkid (pentru a vedea calea spre DVD-ul de instalare, ar trebui sa fie /dev/sr0)
    mount /dev/sr0 /test/
  5. Pentru ca in modul recovery implicit nu exista conxiune la internet, pornirea interfetei de retea si configurarea acesteia se va face manual:
    ip link (listarea interfetelor de retea existente)
    ip link set dev em1 up
    ip addr add 192.168.1.2/24 dev em1 (stabilirea adresei ip a interfetei de retea)
    ip route add default via 192.168.1.1
  6. Dupa ce interfata de retea este activa mai trebuie configurata adresa serverului de DNS:
    vi /etc/resolv.conf
    nameserver 192.168.1.1
  7. Reinstalarea kernel3.10:
    cd test/
    cd Packages/
    yum reinstall kernel-3.10.0-957.el7.x86_64.rpm
  8. Pentru reconfigurarea grub2 este necesara prezenta pachetului grub2-efi-modules. Se va incerca reinstalarea pachetelor: grub2-efi, grub2-efi-modules si shim
    yum reinstall grub2-efi grub2-efi-modules shim
  9. Rescrierea MBR:
    grub2-install /dev/sda
    grub2-install /dev/sdb (in cazul in care hdd-urile sunt in RAID)
  10. Regenerarea fisierului grub.conf:
    grub2-mkconfig -o /boot/grub2/grub.conf
  11. Demontarea unitatii optice:
    umount /test/
  12. Iesirea din interfata de recovery si repornirea sistemului:
    exit
    exit

Migrare software pontaj Anviz

Versiune veche: Anviz Intelligent Management v4.6.5
Versiune noua: Anviz CrossChecks Standard 4.3.12

Se efectueaza instalarea Anviz CrossChex Standard care presupune doar cativa pasi. Dupa finalizarea instalarii se deschide programul si se completeaza detaliile solicitate:

  1. Inregistrarea companiei
    Cateva date de contact si despre identitatea companiei.
  2. Baza de date
    Configurarea accesului la baza de date: server IP, UserName, Password, se bifeaza Create New Database si se completeaza denumirea bazei de date in campul Database Name, apoi se apasa Start New. Programul va crea baza de date si structura necesara de tabele.
  3. Departamente
    Se poate crea un arbore cu structura departamentelor
  4. Angajati
    Se poate importa lista de angajati pe baza machetei propusa de sistem.
  5. Configurari generale
    Configurari generale ale sistemului de pontaj
  6. Orar de lucru
    Configurarea orarului/orarelor de lucru, a schimburilor si asocierea lor la fiecare angajat
  7. Device pontaj
    Inregistrarea si configurarea device-ului de pontaj care va identifica angajatul pe baza amprentei sau a cardului de pontaj.

Dupa prima rulare a programului, se iese din program si se ruleaza direct in baza de date urmatoarea secventa de cod SQL, care va prelua informatiile din vechea baza de date in cea noua, inclusiv conversia anumitor elemente:

TRUNCATE TABLE pontaj_cx.dbo.BasePara;
INSERT INTO pontaj_cx.dbo.BasePara (Company, TwoDay, NoClockIn, NoClockOut, LateTime, LeaveTime, ISOverTime, OverTime, WorkDayLong, WOverTime, HOverTime, FOverTime, OvertimeIn, IsovertimeIn, DeductIn, DeductOut, Contacts, Address, Country, Telephone, Email, Website, /*MinWorkLong, MaxWorkLong, RestDay, CustomField, FaxNumber, Province, Companylogo,*/ databasever, gw_leave1, gw_leave2, gw_leave3, gr_leave1, gr_leave2, gr_leave3, gh_leave1, gh_leave2, gh_leave3)
SELECT 'LIntesa Promotive', TwoDay, NoClockIn, NoClockOut, LateTime, LeaveTime, ISOverTime, OverTime, WorkDayLong, WOverTime, HOverTime, FOverTime, OvertimeIn, IsovertimeIn, DeductIn, DeductOut, 'Lorand Szekely', '', 'Romania', '0740126203', 'lorand.szekely@intesa.ro', 'www.intesa.ro', /*MinWorkLong, MaxWorkLong, RestDay, CustomField, FaxNumber, Province, Companylogo,*/ databasever, gw_leave1, gw_leave2, gw_leave3, gr_leave1, gr_leave2, gr_leave3, gh_leave1, gh_leave2, gh_leave3 FROM pontaj.dbo.BasePara;

TRUNCATE TABLE pontaj_cx.dbo.Checkinout;
SET IDENTITY_INSERT pontaj_cx.dbo.Checkinout ON;
INSERT INTO pontaj_cx.dbo.Checkinout (Logid, Userid, CheckTime, CheckType, Sensorid, Checked, WorkType, AttFlag, OpenDoorFlag)
SELECT Logid, Userid, CheckTime, CAST(CASE When CheckType = 'I' THEN 0 When CheckType = 'O' THEN 1 ELSE CheckType END AS INT) AS CheckType, Sensorid, Checked, WorkType, AttFlag, OpenDoorFlag FROM pontaj.dbo.Checkinout;
SET IDENTITY_INSERT pontaj_cx.dbo.Checkinout OFF;

TRUNCATE TABLE pontaj_cx.dbo.CheckLog;
SET IDENTITY_INSERT pontaj_cx.dbo.CheckLog ON;
INSERT INTO pontaj_cx.dbo.CheckLog (Logid, Userid, CheckTime, CheckType, Sensorid, WorkType, AttFlag, OPFlag, Whys, OPname, DTime)
SELECT Logid, Userid, CheckTime, CAST(CASE When CheckType = 'I' THEN 0 When CheckType = 'O' THEN 1 ELSE CheckType END AS INT) AS CheckType, Sensorid, '', '', OPFlag, Whys, OPname, DTime FROM pontaj.dbo.CheckLog;
SET IDENTITY_INSERT pontaj_cx.dbo.CheckLog OFF;

TRUNCATE TABLE pontaj_cx.dbo.DefineField;
SET IDENTITY_INSERT pontaj_cx.dbo.DefineField ON;
INSERT INTO pontaj_cx.dbo.DefineField (FieldId, FieldName, FieldValue)
SELECT FieldId, FieldName, FieldValue FROM pontaj.dbo.DefineField;
SET IDENTITY_INSERT pontaj_cx.dbo.DefineField OFF;

TRUNCATE TABLE pontaj_cx.dbo.Dept;
SET IDENTITY_INSERT pontaj_cx.dbo.Dept ON;
INSERT INTO pontaj_cx.dbo.Dept (Deptid, DeptName, SupDeptid)
SELECT Deptid, DeptName, SupDeptid FROM pontaj.dbo.Dept;
SET IDENTITY_INSERT pontaj_cx.dbo.Dept OFF;

TRUNCATE TABLE pontaj_cx.dbo.FingerClient;
INSERT INTO pontaj_cx.dbo.FingerClient (Clientid, ClientName, Linkmode, IPaddress, ClientNumber, Baudrate, RecStatus, Floorid, MachineType, DeviceType, CommPWD, CommPort, deviceflag, timezone)
SELECT Clientid, ClientName, Linkmode, IPaddress, ClientNumber, Baudrate, RecStatus, Floorid, MachineType, DeviceType, CommPWD, CommPort, deviceflag, timezone FROM pontaj.dbo.FingerClient;

TRUNCATE TABLE pontaj_cx.dbo.Holiday;
SET IDENTITY_INSERT pontaj_cx.dbo.Holiday ON;
INSERT INTO pontaj_cx.dbo.Holiday (Holidayid, Name, BDate, Days)
SELECT Holidayid, Name, BDate, Days FROM pontaj.dbo.Holiday;
SET IDENTITY_INSERT pontaj_cx.dbo.Holiday OFF;

TRUNCATE TABLE pontaj_cx.dbo.LeaveClass;
SET IDENTITY_INSERT pontaj_cx.dbo.LeaveClass ON;
INSERT INTO pontaj_cx.dbo.LeaveClass (Classid, Classname, ViewColor, Showas)
SELECT Classid, Classname, ViewColor, Showas FROM pontaj.dbo.LeaveClass;
SET IDENTITY_INSERT pontaj_cx.dbo.LeaveClass OFF;

TRUNCATE TABLE pontaj_cx.dbo.OPLog;
SET IDENTITY_INSERT pontaj_cx.dbo.OPLog ON;
INSERT INTO pontaj_cx.dbo.OPLog (Logid, OPid, Optime, OPlog)
SELECT Logid, OPid, Optime, OPlog FROM pontaj.dbo.OPLog;
SET IDENTITY_INSERT pontaj_cx.dbo.OPLog OFF;

TRUNCATE TABLE pontaj_cx.dbo.Schedule;
SET IDENTITY_INSERT pontaj_cx.dbo.Schedule ON;
INSERT INTO pontaj_cx.dbo.Schedule (Schid, Schname, Cycles, Units, IsDefault)
SELECT Schid, Schname, Cycles, Units, AutoClass FROM pontaj.dbo.Schedule;
SET IDENTITY_INSERT pontaj_cx.dbo.Schedule OFF;

TRUNCATE TABLE pontaj_cx.dbo.SchTime;
SET IDENTITY_INSERT pontaj_cx.dbo.SchTime ON;
INSERT INTO pontaj_cx.dbo.SchTime (Schid, BeginDay, Timeid)
SELECT Schid, BeginDay, Timeid FROM pontaj.dbo.SchTime;
SET IDENTITY_INSERT pontaj_cx.dbo.SchTime OFF;

TRUNCATE TABLE pontaj_cx.dbo.TimeTable;
SET IDENTITY_INSERT pontaj_cx.dbo.TimeTable ON;
INSERT INTO pontaj_cx.dbo.TimeTable (Timeid, Timename, Intime, Outtime, BIntime, EIntime, BOuttime, EOuttime, Latetime, Leavetime, WorkDays, Longtime, MustIn, MustOut, IsFreeTime, IsOverTime)
SELECT Timeid, Timename, Intime, Outtime, BIntime, EIntime, BOuttime, EOuttime, Latetime, Leavetime, WorkDays, Longtime, MustIn, MustOut, IsFreeTime, IsOverTime FROM pontaj.dbo.TimeTable;
SET IDENTITY_INSERT pontaj_cx.dbo.TimeTable OFF;

TRUNCATE TABLE pontaj_cx.dbo.Userinfo;
INSERT INTO pontaj_cx.dbo.Userinfo (Userid, UserCode, Name, Sex, Pwd, Deptid, Nation, Birthday, EmployDate, Telephone, Duty, NativePlace, IDCard, Address, Mobile, Educated, Polity, Specialty, IsAtt, Isovertime, Isrest, Remark, MgFlag, CardNum, Picture, UserFlag, Groupid, ClassFlag)
SELECT Userid, Userid, Name, Sex, Pwd, Deptid, Nation, Brithday, EmployDate, Telephone, Duty, NativePlace, IDCard, Address, Mobile, Educated, Polity, Specialty, IsAtt, Isovertime, Isrest, Remark, MgFlag, Cardnum, Picture, UserFlag, Groupid, 1 FROM pontaj.dbo.Userinfo;

TRUNCATE TABLE pontaj_cx.dbo.UserLeave;
SET IDENTITY_INSERT pontaj_cx.dbo.UserLeave ON;
INSERT INTO pontaj_cx.dbo.UserLeave (Lsh, Userid, BeginTime, EndTime, LeaveClassid, Whys)
SELECT Lsh, Userid, BeginTime, EndTime, LeaveClassid, Whys FROM pontaj.dbo.UserLeave;
SET IDENTITY_INSERT pontaj_cx.dbo.UserLeave OFF;

TRUNCATE TABLE pontaj_cx.dbo.UserPower;
SET IDENTITY_INSERT pontaj_cx.dbo.UserPower ON;
INSERT INTO pontaj_cx.dbo.UserPower (Logid, Userid, ClientNumber, PowerFlag)
SELECT Logid, Userid, ClientNumber, PowerFlag FROM pontaj.dbo.UserPower;
SET IDENTITY_INSERT pontaj_cx.dbo.UserPower OFF;

TRUNCATE TABLE pontaj_cx.dbo.UserShift;
INSERT INTO pontaj_cx.dbo.UserShift (Userid, Schid, BeginDate, EndDate)
SELECT Userid, Schid, BeginDate, EndDate FROM pontaj.dbo.UserShift;

Pentru acces deplin asupra tuturor elementelor se porneste programul, iar din meniul Settings > Administrators se bifeaza toate elementele apoi se apasa butonul Apply.

Pentru autentificarea in program se foloseste utilizatorul ADMIN si fara parola.

Toate configuratiile de la momentul primei rulari, precum si stabilirea sau resetarea parolei de administrator pot fi efectuate oricand din aplicatie.

Migrare masina virtuala din VMware Player in ESXi

  1. Se porneste masina virtuala care trebuie exportata si se dezinstaleaza VMware Tools, apoi se face restart.
  2. Dupa ce masina virtuala reporneste se face shutdown.
  3. Urmeaza exportul in format OVF al masinii virtuale. Pentru aceasta se va utiliza, din linie de comanda, programul ovftool.exe  care este localizat in C:\Program Files\VMware\VMware Player\OVFTool .
    Comanda pentru export este:
    ovftool.exe "C:\calea_spre_mv.vmx" "D:\folder_destinatie"
  4. Importul fisierului OVF in serverul ESXi poate fi facut fie prin VMware vSphere fie prin interfata web de administrare ESXi.

    In prima varianta: File > Deploy OVF Template, se alege fisierul OVF creat anterior si se urmeaza instructiunile pana la final.

    In cazul utilizarii interfetei web: Virtual Machines > Create / Register VM > Deploy a virtual machine from an OVF or OVA file, apoi se urmeaza instructiunile pana la final.

Adaugare sufix cititor coduri de bare Honeywell 3800G

Honeywell 3800g

Honeywell 3800g

In cazul in care se scaneaza consecutiv mai multe coduri de bare este necesara utilizarea unui caracter delimitator. Cititorul de coduri de bare Honeywell 3800G (cel utilizat de mine) poate fi configurat asa incat sa insereze acest caracter delimitator dupa fiecare scanare.

Procedura de configurare poate fi gasita in Manualul de utilizare > Capitolul 4 – Data Editing > To Add a Prefix or Suffix. De asemenea, este necesara utilizarea Anexei A – Programming Chart, care se afla la finalul manualului.

Pe scurt, pentru inserarea caracterului CR (Carriage Return) la finalul fiecarei scanari sunt necesari urmatorii pasi:

  1. Se scaneaza codul Clear All Suffixes (pagina 4-4 din Manualul de utilizare)
  2. Se scaneaza codul Add Suffix
  3. Se identifica codul hexa al tipului de cod de bare pentru care se doreste configurarea sufixului (pentru tipologia Code 128 codul hexa este 6A). Daca se doreste adaugarea sufixului pentru toate tipologiile de coduri de bare atunci codul hexa este 99 (All Symbologies)
  4. Se scaneaza codurile de bare corespunzatoare secventei de caractere 6A (identificat la pasul anterior)
  5. Se identifica codul hexa al caracterului CR in tabelul ASCII Conversion Chart (CR = 0D)
  6. Se scaneaza codurile de bare corespunzatoare secventei de caractere 0D (din anexa Programming Chart)
  7. Se scaneaza codul Save (din anexa Programming Chart)

In mod asemanator se procedeaza pentru configurarea unui prefix al codului de bare.

Pentru ca utilizarea sufixului CR este cel mai des intalnita, exista un cod de bare care inlocuieste toti pasii de mai sus: Add CR Suffix for All Symbologies.