Aller au contenu

HC2 & HCL - 4.161 - BETA - 15/02/2018


Messages recommandés

Posté(e)

c'est le watchdog de @Lazer...

Si le watchdog est planté, comment veux-tu qu'il se contrôle ?

Si tu veux un watchdog de ton watchdog, tu dois en faire un autre, par exemple un script unix depuis ton Syno ?

  • Haha 1
Posté(e)

je dirais même TRES mal barré. Pense à l'exil à Ste Hélène comme Napoléon, car en tant que modérateur, il a toutes tes coordonnées.

Bon courage

:(

  • Like 1
Posté(e)
Le 09/03/2018 à 18:14, henri-allauch a dit :

Je ne suis qu'en 4.60 et la mémoire est stable depuis plusieurs mois.

Ce qui m'étonne c'est qu'en général, après un backup, les services redémarent et la mémoire FREE et légèrement supérieure ( libération du cache )

Or dans ton cas ce serait le backup-auto qui bouffe la mémoire  ?

Tu devrais regarder les valeurs Avant et Apres un backup Manuel 

Hello la compagnie,

 

Je comprends ta remarque sur le redémarrage après un backup.

Comme je l'ai indiqué (et je viens de regarder à l'instant), depuis que j'ai désactivé le Backup auto, je n'ai plus de problèmes avec la ram depuis 3 jours !

3 jours à 45% contre 98% chaque jour après backup.

 

Maintenant, ce qu'il reste à faire et j'y vais de ce pas, c'est forcer un backup (à l'aide du script) pour voir comme cela se passe.

@+

Posté(e) (modifié)

j'avais compris qu'après ton backup automatique tu te retrouvé a 98% de mémoire utilisée

Après Backup manuel tu a 45% ce qui semble très correct 

je trouvais cela curieux et donc le script est à suspecter dans ce cas. 

Modifié par henri-allauch
Posté(e)

Ecoute, je regarde dans le script mais il n'y a pas de copyright.

J'ai 3 scripts, Backup Create, Backup Delete et Backup Batch.

 

Et je confirme, c'est lui qui me passe ma RAM a saturation !

Après plusieurs jour de test j'en suis à 1999.0000 fois certain.

 

Donc je désactive.

Posté(e)

c'est un scirpt unix ? qui est hosté où, et tourne avec utilisateur.

 

de mémoir @Nikko avait fait une scène qui permettait de faire des backup automatiques.

Posté(e)

Partage le code, l'auteur coupable se reconnaitra.

 

A moins que ça ne soit un assemblage de différents bouts de codes trouvés ça et là, je crois me souvenir que la scène de backup auto a été modifiée plusieurs fois sur le forum.

Posté(e) (modifié)

Hello,

 

En fait, j'ai désactivé le backup auto pendant plusieurs jour : Ram OK

Plusieurs jours après, j'ai lancé un backup en cliquant sur la scène qui permet de faire le backup.

Et ensuite, je constate la Ram KO

 

Depuis ce dernier test ma ram est O (en rebootant).

 

Du coup je vais lancer un backup normal sans passer par une scène, chose que je n'ai pas encore testé.

Modifié par Domodial
Posté(e) (modifié)

Le code de Backup_create

En fait il y a 3 scripts pour faire le backup, je post uniquement celui avec lequel j'ai lancé la scène manuellement et qui crée le backup, et ou ça me plante la Ram.

 

En gros la combinaison des 3 scripts permet de crée et aussi d'effacer et de régler le nombre de backup.

--[[
%% properties
%% events
%% globals
--]]
     
-- ID des mobiles,tablettes pour notification
local portable = {584}
local backup_symbol = '!' -- for auto delete only backups with this symbol on irst postion in description
local backup_stay = '025' -- numbers of days to store autobackups (from 001 to 999 with loading zeros)
print('Current parameters:')
print('delete after: '..backup_stay..' day(s), only backups with description start by ['..backup_symbol..']')
fibaro:sleep(10*1000)

function sendPush(message)
    if #portable > 0 then
        for _,v in ipairs(portable) do
            fibaro:call(v,'sendPush', message)
        end
    end
end

-- Message Descriptif du Backup
local descriptif = backup_symbol..'['..backup_stay..'] Autobackup - '..os.date("%d/%m/%y - %HH%M")

-- Password admin encodé en base64
local password = 'YWRtadfd5421fzsfsfd548lsaWFrNjZGOw=='

local url = 'http://127.0.0.1/api/service/backups'
local datas = '{"action":"create","params":{"name":"'..descriptif..'"}}'


local httpClient = net.HTTPClient()
httpClient:request(url , {
        success = function(response)
                    if tonumber(response.status) == 201 or tonumber(response.status) == 202 then
                        print("Backup Created at " .. os.date())
                        sendPush(descriptif .. ' effectué')                
                    else
                        print("Error " .. response.status)
                         sendPush('Erreur lors de la création du Backup - '.. response.status)
                    end
                end,
        error = function(err)
                    print('error = ' .. err)
                end,
        options = {
                method = 'POST',
                headers = { 
                        ["content-type"] = 'application/json',
                        ["Authorization"] = 'Basic '..password
                          },
                data = datas
            }
});

 

Modifié par Domodial
Posté(e)

Reconnu ;-) En fait c'est le code de @Nikko adapté par @drboss je crois.

 

Ci-dessous ce que j'utilise et qui fonctionne parfaitement, les 2 scènes de BAckup de @Nikko : Création et suppression. Concernant le nombre j'ai supprimé manuellement la 1ere fois et garder le nombre qui m'nteressait, soit 5.Ensuite je supprime et fais le backup ;-) avec GEA 1 fois par semaine. Backup :

--[[
%% properties
%% events
%% globals
--]]

-- BACKUP
-- ID des mobiles,tablettes pour notification
local portable = {} -- {XX, XX}
 
-- Message Descriptif du Backup
local descriptif = 'Backup HC2 du '..os.date("%d/%m/%y - %HH%M")

-- Password admin encodé en base64
local password = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
 
function sendPush(message)
    if #portable > 0 then
        for _,v in ipairs(portable) do
            fibaro:call(v,'sendPush', message)
        end
    end
end

--[[function sendPush(message)
    if #portable > 0 then
            fibaro:setGlobal('FreeSms', message)
    end
end]]--
 
local url = 'http://127.0.0.1/api/service/backups'
local datas = '{"action":"create","params":{"name":"'..descriptif..'"}}'

local httpClient = net.HTTPClient()
httpClient:request(url , {
        success = function(response)
                    if tonumber(response.status) == 201 or tonumber(response.status) == 202 then
                        print("Backup Created at " .. os.date())
                        sendPush(descriptif .. ' effectué')
                    else
                        print("Error " .. response.status)
                        sendPush('Erreur lors de la création du Backup')
                    end
                end,
        error = function(err)
                    print('error = ' .. err)
                end,
        options = {
                method = 'POST',
                headers = {
                        ["content-type"] = 'application/json',
                        ["Authorization"] = 'Basic '..password
                          },
                data = datas
            }
});

Suppression Backup :

--[[
%% properties
%% events
%% globals
--]]
 
--DELETE BACKUP
-- Flag dryrun; Si true, la requete sur api pour effacer le backup n'est pas effectuée
local dryrun = false

 
-- Password admin encodé en base64
local password = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

function sortBackup(data)
    local backups = json.decode(data)
    -- Vérification de présence Backup
    if (backups and type(backups == 'table') and #backups > 0) then
        if #backups > 1 then print(#backups .. ' Backups présents') else print('1 Backup présent') end
    
        for i in ipairs(backups) do
            fibaro:debug('ID: '..backups[i]['id']..' | TIMESTAMP: '..backups[i]['timestamp']..' | DESCRIPTION: '..backups[i]['description'])
        end
    else
        print('Pas de backup ou erreur lors de la récupération de la liste')
        fibaro:abort()
    end
    
    -- Pour chaque Backup on stock le timestamp de la date de réalisation dans une table
    -- On classe ensuite les timestamps par ordre croissant
    local timestamp = {}
    for i in ipairs(backups) do
        table.insert(timestamp, backups[i]['timestamp'])
    end
    table.sort(timestamp)


    -- Le 1er timestamp de la table est le plus petit donc le plus ancien en epochtime
    -- Dans la table de backup on recherche le backup ayant ce timestamp
    local id = false
    for i in ipairs(backups) do
        if (tonumber(backups[i]['timestamp']) == tonumber(timestamp[1])) then id = backups[i]['id'] end
    end

    if id then
        print("ID du backup le plus ancien: "..id)
        deleteBackup(id)
    else
        print("Erreur lors de la récupération de l'ID")
        fibaro:abort()
    end

end

function deleteBackup(id)
    -- Requete via API pour effacer le backup le plus ancien
    if (not dryrun) and (id) then
        print('Effacement du backup '..id..' en cours. Cela peut prendre 30s')
        local url = 'http://127.0.0.1/api/service/backups/'..id
        local httpClient = net.HTTPClient()
        httpClient:request(url , {
            success = function(response)
                        if tonumber(response.status) == 200 then
                            print("Backup deleted at " .. os.date())
                        else
                            print("Error " .. response.status)                      
                        end
                    end,
            error = function(err)
                        print('error = ' .. err)
                    end,
            options = {
                    method = 'DELETE',
                    headers = {
                        ["content-type"] = 'application/x-www-form-urlencoded;',
                        ["authorization"] = 'Basic '..password
                            },
                    data = 'id='..id
                }
        })
    end
end

-- Récupération de la list des backups
local GETClient = net.HTTPClient()
if dryrun then print('Mode DryRun -> La requète pour effacer ne sera pas éxécutée') end
GETClient:request('http://127.0.0.1/api/service/backups', {
    success = function(response)
                if tonumber(response.status) == 200 then
                    sortBackup(response.data)
                else
                    print("Error " .. response.status)                      
                   end
                end,
    error = function(err)
                print('error = ' .. err)
            end,
    headers = {
                ["content-type"] = 'application/x-www-form-urlencoded;',
                ["authorization"] = 'Basic '..password
                }                       
    });

 

Posté(e)

@Domodial si c'est ton vrai mot de passe, je te conseille d'éditer ton post et de le supprimer, car le bas64 est justement fait pour être décodable (en gros, sécurité = 0)

 

Par contre tu parles toujours de mémoire à 0, mais tu ne nous donne pas la répartition de la RAM. Donc ça ne signifie pas grand chose...

Posté(e) (modifié)

ben si, rien à foutre des sauvegardes, je veux juste pas saturer ma mémoire, rien à foutre de la répartition :lol:

Domodial en mode viking :D 

Modifié par Domodial
Posté(e)

une sauvegarde ne sert à rien

 

jusqu'à quand tu en as besoins ...

 

Et de mon expérience Fibaro, je puis te garantir avoir été très content d'avoir des sauvegardes

×
×
  • Créer...