Jump to content

ytf

Members
  • Posts

    150
  • Joined

  • Last visited

  • Days Won

    2

ytf last won the day on April 24 2019

ytf had the most liked content!

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

ytf's Achievements

Newbie

Newbie (1/14)

4

Reputation

  1. Сначала нужно убедиться, что вы в домашнем каталоге. Например выполнив команду cd ~/ а после mkdir test можно перейти в него командой cd test а дальше не знаю
  2. Довольно частая ошибка, но не критичная, компьютером можно пользоваться, обычно через минуту после полного запуска ОС интернет уже работает.
  3. добрый день, если ввести в поиске curl: (35) gnutls_handshake() failed: Certificate is bad то можно найти некоторые подсказки, например, $ch[CURLOPT_SSLVERSION] = CURL_SSLVERSION_TLSv1_1; но сам я не пробовал
  4. ну я не знаком с элементари ос, можно попробовать установить crunchbang plus plus
  5. Можно запускать обновление не вручную, а по расписанию, допустим 1 раз при каждом включении пк. Если файлы сайта располагаются в директории /var/www/s1.local, то можно создать файл /var/www/s1.local/check.online.sh #!/bin/bash INTERNET_STATUS="" while [ "$INTERNET_STATUS" != "UP" ] do ping -c 1 -W 0.7 8.8.4.4 > /dev/null 2>&1 if [ $? -eq 0 ] ; then INTERNET_STATUS="UP" else sleep 4 fi done; php -q /var/www/s1.local/obnov.php >> /home/user/obnovlenie_firefox_i_flash.txt 2>&1 Открыть терминал и выполнить команду: sudo crontab -e , добавить в конец файла строку @reboot /var/www/s1.local/check.online.sh Сохранить изменения с помощью двух команд "Ctrl+O", "Ctrl+X"
  6. насколько я понял, приложения, написанные для виндовс, будут притормаживать в линукс, а их запуск повлечёт за собой возможность срабатывания виндовс-вирусов, поэтому не рекомендую данный путь какое приложение вы пытались установить?
  7. грузиться с лив сиди, читать логи и публиковать ошибки, найденные в логах, на форумах
  8. никогда не встречал книг о том, как устроены линукс-системы
  9. Здравствуйте! к разработчику программы xrdp вы обращались? сообщили ему/ей об ошибке?
  10. Для обновления браузера firefox и flash плагина я написал php скрипт, который состоит из директории 777 ( всем пользователям даны права на запись в эту директорию), файла nget.php и файла obnov.php, все файлы можно разместить на одном из локальных сайтов. Содержимое файла nget.php <?php define("KURL_LOGIROVANIE", false); // true - если нужно сохранять ответы на http запросы в текстовый файл, иначе - false define("FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV", __DIR__.'/777/curl_zaprosy.txt'); // путь к текстовому файлу, в который будут записываться URL адреса страниц, ошибки, результаты запросов define("FILE_DLYA_ZAPISI_KUKIS", __DIR__.'/777/curl_kuki.txt'); // путь к текстовому файлу, в который будут записываться кукис define("KURL_PAUZA", 50); // на какое число микросекунд скрипт засыпает перед следующим http запросом $last_curl_url = array(); // последний открытый сетевой адрес // сетевой запрос /* Параметры массива add: * yupi - строка логин:пароль для http авторизации * xml - добавляет заголовок ajax запроса * json - согласие получить в ответ json * post - массив данных, отправляемых формой * multi - массив данных, отправляемых формой в виде multipart-formdata * move - ограничить число допустимых редиректов, по умолчанию 5 * top - включать заголовок в ответ функции, по умолчанию да * save - сохранить ответ в файл с именем * proxy - прокси * ref - ссылка, с которой мы перешли * req - request запрос * nobody - получение только заголовков header */ function nget($url="",$add=array()) { file_put_contents(FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV, $url."\n", 8); if (!function_exists("curl_init")) return fget($url,$add); if (!($curl = curl_init())) return NULL; curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_COOKIEJAR, FILE_DLYA_ZAPISI_KUKIS); curl_setopt($curl, CURLOPT_COOKIEFILE, FILE_DLYA_ZAPISI_KUKIS); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0'); if (isset($add['yupi'])) curl_setopt($curl, CURLOPT_USERPWD, $add['yupi']); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false); $headers = array(); if (isset($add['xml'])) { // ajax запрос $headers[] = 'X-Requested-With: XMLHttpRequest'; }; if (isset($add['nobody'])) { // header запрос curl_setopt($curl, CURLOPT_NOBODY, 1); $add['move'] = 0; $add['top'] = 1; }; if (isset($add['json'])) { // json запрос $headers[] = 'Accept: application/json'; }; if (isset($add['post'])) { // post запрос curl_setopt($curl,CURLOPT_POST, TRUE); curl_setopt($curl,CURLOPT_POSTFIELDS, http_build_query($add['post'])); }; if (isset($add['multi'])) { // post multi/part запрос curl_setopt($curl,CURLOPT_POST, TRUE); curl_setopt($curl,CURLOPT_POSTFIELDS, $add['multi']); }; if (isset($add['req'])) { // request запрос curl_setopt($curl,CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl,CURLOPT_POSTFIELDS, $add['req']); $headers[] = 'Content-Type: application/json'; }; if (!isset($add['move'])) $add['move'] = 5; if ($add['move']>0) { // разрешены редиректы $add['top'] = true; // включать header в ответ } if (!isset($add['top']) OR isset($add['save'])) $add['top']=false; curl_setopt($curl, CURLOPT_HEADER, $add['top']); if (isset($add['proxy'])) curl_setopt($curl, CURLOPT_PROXY, $add['proxy']); if (isset($add['ref'])) curl_setopt($curl, CURLOPT_REFERER, $add['ref']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, (isset($add['save'])?false:true)); if (isset($add['save'])) { // сохранить файл в if (FALSE===($out = fopen($add['save'],"w+"))) { file_put_contents(FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV,"failed opening of file ".$add['save']."\n",8); exit; } curl_setopt($curl, CURLOPT_FILE, $out); } curl_setopt($curl, CURLOPT_FORBID_REUSE, false); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, isset($add['time'])?$add['time']:120); curl_setopt($curl, CURLOPT_TIMEOUT, isset($add['time'])?$add['time']:120); $no_header_params = array('xml','json','post','move','top','save','yupi','ref','proxy','multi','req','time','nobody'); if (!empty($add)) foreach ($add as $k=>$h) if (!in_array($k,$no_header_params)) $headers[] = $h; if (!empty($headers)) curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); global $last_curl_url; $last_curl_url[] = $url; while (1) { usleep(KURL_PAUZA); $data = curl_exec($curl); if (KURL_LOGIROVANIE==true) file_put_contents(FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV, $data, 8); $curl_errno = curl_errno($curl); if ($curl_errno > 0 AND $curl_errno!=28) { file_put_contents(FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV,'cURL Error ('.$curl_errno.'): '.curl_error($curl)." on curl ".var_export($last_curl_url,1)."\n",8); curl_close($curl); exit; } if ($add['move']<1) break; $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($code != 301 && $code != 302) break; $header_start = strpos($data, "\r\n")+2; $headers = substr($data, $header_start, strpos($data, "\r\n\r\n", $header_start)+2-$header_start); if (!preg_match("!\r\n(?:Location|URI): *(.*?) *\r\n!", $headers, $matches)) break; $newurl = $matches[1]; if (!strpos($newurl, "//")) { $old_url_parts=explode("//",end($last_curl_url)); $old_url_http_part=$old_url_parts[0]; $old_url_host_part=explode("/",$old_url_parts[1]); $newurl=$old_url_http_part.'//'.$old_url_host_part[0].$newurl; } curl_setopt($curl, CURLOPT_URL, $newurl); file_put_contents(FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV, $newurl."\n", 8); $last_curl_url[] = $newurl; $add['move']--; // уменьшение числа разрешённых редиректов }; curl_close($curl); if (!$add['top']) { $ah = strpos($data, "\r\n\r\n")+4; if ($ah<200 AND substr($data,0,21)=='HTTP/1.1 100 Continue') $ah = strpos($data, "\r\n\r\n", $ah)+4; $data = substr($data, $ah); } if (isset($add['save'])) { fclose($out); return 1; } return $data; } /* аналог curl с помощью file_get_contents */ function fget($url="",$add=array()) { $arrContextOptions=array( "ssl"=>array( "verify_peer"=>false, "verify_peer_name"=>false, ), "http"=>array( "user_agent"=>'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0' ) ); $headers = array(); if (isset($add['xml'])) { // ajax запрос $headers[] = 'X-Requested-With: XMLHttpRequest'; }; if (isset($add['json'])) { // json запрос $headers[] = 'Accept: application/json'; }; if (isset($add['post'])) { // post запрос $arrContextOptions['http']['method'] = "POST"; $arrContextOptions['http']['content'] = http_build_query($add['post']); }; if (isset($add['multi'])) { // post multi/part запрос $arrContextOptions['http']['method'] = "POST"; $arrContextOptions['http']['content'] = $add['multi']; }; if (isset($add['req'])) { // request запрос $arrContextOptions['http']['method'] = "POST"; $arrContextOptions['http']['content'] = $add['req']; $headers[] = 'Content-Type: application/json'; }; if (!isset($add['move'])) $add['move'] = 5; if ($add['move']>0) { // разрешены редиректы $add['top'] = true; // включать header в ответ } if (!isset($add['top']) OR isset($add['save'])) $add['top']=false; if (isset($add['proxy'])) $arrContextOptions['http']['proxy'] = $add['proxy']; if (isset($add['ref'])) $headers[] = 'Referer: '.$add['ref']; if (isset($add['save'])) { // сохранить файл в if (FALSE===($out = fopen($add['save'],"w+"))) { file_put_contents(FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV,"failed opening of file ".$add['save']."\n",8); exit; } } $arrContextOptions['http']['timeout'] = isset($add['time'])?$add['time']:10; $no_header_params = array('xml','json','post','move','top','save','yupi','ref','proxy','multi','req','time'); if (!empty($add)) foreach ($add as $k=>$h) if (!in_array($k,$no_header_params)) $headers[] = $h; if (isset($add['yupi'])) $headers[] = 'Authorization : Basic '.base64_encode($add['yupi']); if (!empty($headers)) $arrContextOptions['http']['header'] = $headers; global $last_curl_url; $last_curl_url[] = $url; usleep(KURL_PAUZA); $data = file_get_contents($url, false, stream_context_create($arrContextOptions)); if (KURL_LOGIROVANIE==true) file_put_contents(FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV, $data, 8); if (isset($add['save'])) { fclose($out); return 1; } return $data; } // сетевой запрос, скачивающий файл с помощью консольной команды wget function wget($url="",$filename="") { if (function_exists('system')) { usleep(KURL_PAUZA); system('wget -O '.$filename.' '.$url,$retval); } else return false; return ($retval===0); } // найти участок кода между двух строк function iska($nachalo, $konec, $string) { if (!preg_match('/'.preg_quote($nachalo,'/').'(.*)'.preg_quote($konec,'/').'/ismU',$string,$nashli)) return ''; return $nashli[1]; } // удалить участок кода между двух строк function udal($nachalo, $konec, $string) { return preg_replace('/'.preg_quote($nachalo,'/').'.*'.preg_quote($konec,'/').'/ismU','',$string); } // очистка логов запросов function ochistka_logov_zaprosov() { file_put_contents(FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV, ""); } // проверка, давно ли не было запросов function dolgo_ne_bylo_http_zaprosov($dolgo=50) { $a = time(); $b = filemtime(FILE_DLYA_ZAPISI_POLUCHENNYH_OTVETOV); if ( ($a-$b)>$dolgo ) return true; else return false; } Содержимое файла obnov.php <?php ignore_user_abort(true); ini_set("max_execution_time",3600); ini_set("memory_limit","1200M"); require 'nget.php'; $f=time(); $wd=__DIR__.'/777/'; // директория для записи файлов $u = "https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=ru"; var_dump($u); $h=nget($u, array('nobody'=>1)); //echo $h; $n=iska('releases/','/',$h); var_dump($n); $o=1; // обновлять ли программу if (file_exists($wd.'firefox.version')) { $pn=file_get_contents($wd.'firefox.version'); if ($pn==$n) $o=0; } file_put_contents($wd.'firefox.version',$n); if ($o) { if (preg_match("!\r\n(?:Location|URI): *(.*?) *\r\n!", $h, $matches)) { $newurl = $matches[1]; var_dump($newurl); unlink($wd.'firefox.tar.bz2'); nget($newurl, array('save'=>$wd.'firefox.tar.bz2')); $output = shell_exec('tar -vxjf '.$wd.'firefox.tar.bz2 -C /opt'); file_put_contents($wd.'firefox.output.txt',$output); } } echo 'firefox ok'; echo "\n"; $u = "https://get.adobe.com/ru/flashplayer/"; var_dump($u); $h=nget($u, array()); //echo $h; $n=trim(iska('Версия','<',$h)); var_dump($n); $o=1; // обновлять ли программу if (file_exists($wd.'flash.version')) { $pn=file_get_contents($wd.'flash.version'); if ($pn==$n) $o=0; } file_put_contents($wd.'flash.version',$n); if ($o) { $h1 = iska('case "3":','case "4":',$h); var_dump($h1); $h2 = iska('$("#buttonDownload").attr("href","','"',$h1); var_dump($h2); if ($h2!=='') { $h=nget("https://get.adobe.com/".$h2, array()); $newurl = iska("location.href = '","'",$h); sleep(2); unlink($wd.'flash.tar.gz'); var_dump($newurl); nget($newurl, array('save'=>$wd.'flash.tar.gz')); $output = shell_exec('tar -xzvf '.$wd.'flash.tar.gz -C /usr/lib/mozilla/plugins libflashplayer.so'); $output2 = shell_exec('tar -xzvf '.$wd.'flash.tar.gz -C / usr'); file_put_contents($wd.'flash.output.txt',$output."\n".$output2); } } echo 'flash ok'; echo "\n"; Для обновления браузера firefox и flash плагина достаточно в терминале выполнить команду sudo php -q /директория_в_которой_находятся_файлы_сайта/obnov.php Если php не установлен, его можно установить с помощью команды sudo apt-get install php Поскольку скрипт устанавливает программу firefox в директорию opt, для запуска firefox нужно будет использовать команду /opt/firefox/firefox -P default Если раньше firefox вы запускали с помощью другой команды, то может потребоваться изменить команду запуска в меню автозагрузки и в меню запуска приложений.
  11. ytf

    stumpwm

    в crunchbangplusplus я просто добавил команду setxkbmap -layout "us,ru" -model "pc105" -option "grp:ctrl_shift_toggle,grp_led:scroll" & в автозагрузку и у меня происходит смена раскладки по нажатию ctrl+shift
  12. может вы пунто свитчер используете или другой кейлоггер?
  13. значит его не обязательно создавать при разметке диска
  14. под словом boot я подразумевал раздел, в который записывается загрузчик, например загрузчиком может быть grub2, то есть установщик операционной системы спрашивает "какой раздел вы хотите сделать загрузочным?" и там есть возможность выбрать жесткий диск или его раздел иногда загрузчик не помещается в первые байты жесткого диска и нужно сначала создать раздел, например 1 гб, потом создать остальные разделы, потом удалить первый раздел
  15. не знаю, но скорее всего разбивка мало отличается от других линукс ос например, в дебиан достаточно двух разделов "/ - root" и "swap" если это вторая ос на компьютере, то после установки второй ос первая может не загрузиться, в зависимости от совместимости загрузчика, разделом boot может быть дисковый накопитель, например, /dev/sda
×
×
  • Create New...