<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>linux on Christian Knedel</title>
    <link>https://www.christian-knedel.de/zh/tags/linux/</link>
    <description>Recent content in linux on Christian Knedel</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 04 Apr 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://www.christian-knedel.de/zh/tags/linux/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>小故事：Jenkins和openLDAP</title>
      <link>https://www.christian-knedel.de/zh/post/2021/april/20210404-docker-jenkins/</link>
      <pubDate>Sun, 04 Apr 2021 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2021/april/20210404-docker-jenkins/</guid>
      <description>本教程是建立在以前的 &amp;ldquo;容器的伟大之处：在Synology DS上运行Jenkins &amp;ldquo;知识基础上的。如果你一开始就已经有了LDAP，你只需要创建一个合适的应用组。    之后，你需要在Jenkins中输入设置。我点击 &amp;ldquo;管理Jenkins&amp;rdquo;&amp;gt;&amp;ldquo;配置全球安全&amp;rdquo;。        重要提示：对于自签名的证书，信任库必须由Jenkins服务器的Java-Opts提供。由于我的Jenkins服务器是通过Docker Compose文件创建的，对我来说，它看起来像这样。
version: &#39;2.0&#39; services: jenkins: restart: always image: jenkins/jenkins:lts privileged: true user: root ports: - port:8443 - port:50001 container_name: jenkins environment: JENKINS_SLAVE_AGENT_PORT: 50001 TZ: &#39;Europe/Berlin&#39; JAVA_OPTS: &#39;-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true -Djdk.tls.trustNameService=true -Djavax.net.ssl.trustStore=/store/keystore.jks -Djavax.net.ssl.trustStorePassword=pass&#39; JENKINS_OPTS: &amp;quot;--httpsKeyStore=&#39;/store/keystore.jks&#39; --httpsKeyStorePassword=&#39;pass&#39; --httpPort=-1 --httpsPort=8443&amp;quot; volumes: - ./data:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock - /usr/local/bin/docker:/usr/local/bin/docker - ./keystore.jks:/store/keystore.jks - ./certs:/certs logging: ..... usw </description>
    </item>
    
    <item>
      <title>小故事：用xDoTools和xClip进行桌面控制</title>
      <link>https://www.christian-knedel.de/zh/post/2021/april/20210404-xdotools-xclip/</link>
      <pubDate>Sun, 04 Apr 2021 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2021/april/20210404-xdotools-xclip/</guid>
      <description>在本教程中，我展示了如何通过Bash控制Linux&amp;ndash;桌面。Bash机器人需要以下软件包。 x  &amp;ndash;  +   Terminal   $ apt-get install xdotool xclip   之后，你可以使用所有的xdotool命令，比如说。
#!/bin/bash #mouse bewegen xdotool mousemove 100 200 #Mouse - Koordinaten erfassen xdotool getmouselocation #Mouse-klick xdotool click 1 Mouse-Klick auf Koordinaten xdotool mousemove 100 200 click 1 #usw... 在下面的例子中，Firefox窗口被搜索到，一个新的标签被打开，上面是Ubuntu的地址。
WID=$(xdotool search firefox | head -n1) ## Window-ID von Firefox ermitteln xdotool windowactivate $WID xdotool key &amp;quot;ctrl+t&amp;quot; ## neuen Reiter öffnen xdotool key &amp;quot;ctrl+l&amp;quot; ## Fokussieren der Adressleiste xdotool type --delay 100 &amp;quot;ubuntuusers.</description>
    </item>
    
    <item>
      <title>阿特拉斯公司的酷事：用LDAP使用所有阿特拉斯工具</title>
      <link>https://www.christian-knedel.de/zh/post/2021/march/20210321-atlassian-ldap/</link>
      <pubDate>Wed, 24 Mar 2021 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2021/march/20210321-atlassian-ldap/</guid>
      <description>如果你有自己的Atlassian安装，你是幸运的。今天我展示了我如何将Jira、Bamboo和Confluence连接到我的LDAP服务器。
第1步：安装OpenLDAP 我已经在我的Synology NAS上用这个Docker Compose文件设置了OpenLDAP。
ersion: &#39;2&#39; services: openldap: restart: always image: osixia/openldap container_name: openldap environment: LDAP_TLS: &#39;true&#39; LDAP_TLS_CRT_FILENAME: &#39;....pem&#39; LDAP_TLS_KEY_FILENAME: &#39;......pem&#39; LDAP_TLS_CA_CRT_FILENAME: &#39;......pem&#39; LDAP_ORGANISATION: &amp;quot;365Layouts&amp;quot; LDAP_DOMAIN: &amp;quot;homelab.local&amp;quot; LDAP_BASE_DN: &amp;quot;dc=homelab,dc=local&amp;quot; LDAP_ADMIN_PASSWORD: &amp;quot;......&amp;quot; LDAP_TLS_CIPHER_SUITE: &amp;quot;NORMAL&amp;quot; LDAP_TLS_VERIFY_CLIENT: &amp;quot;allow&amp;quot; LDAP_TLS_CIPHER_SUITE: NORMAL tty: true stdin_open: true volumes: - ./ldap:/var/lib/ldap - ./slapdd:/etc/ldap/slapd.d - ./certs:/container/service/slapd/assets/certs/ - ./memberof.ldif:/root/memberof.ldif - ./refint.ldif:/root/refint.ldif ports: - &amp;quot;389:389&amp;quot; - &amp;quot;636:636&amp;quot; hostname: &amp;quot;homelab.local&amp;quot; networks: - ldap phpldapadmin: restart: always image: osixia/phpldapadmin:latest container_name: phpldapadmin volumes: - .</description>
    </item>
    
    <item>
      <title>在NUC上安装ESXi。通过MacBook准备好U盘。</title>
      <link>https://www.christian-knedel.de/zh/post/2021/march/20210307-esxi-nuc/</link>
      <pubDate>Sun, 07 Mar 2021 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2021/march/20210307-esxi-nuc/</guid>
      <description>通过ESXi，&amp;ldquo;intel NUC &amp;ldquo;可以被划分为任何数量的计算机。在本教程中，我展示了我是如何在我的NUC上安装VMware ESXi的。小前言：我建议在安装ESXi之前进行BIOS更新。你还将需要一个32GB的U盘。我从亚马逊买了一整捆，每捆不到5欧元。    我的NUC-8I7BEH有2个16GB HyperX Impact内存，1个256GB三星970 EVO M2模块和一个1TB 2.5英寸WD-RED硬盘。    第1步：找到USB棒 下面的命令显示了我所有的驱动器。 x  &amp;ndash;  +   Terminal   $ diskutil list   这里你可以看到我的U盘的标识符是 &amp;ldquo;disk2&amp;rdquo;。    第2步：准备好文件系统 现在我可以使用以下命令来准备文件系统。 x  &amp;ndash;  +   Terminal   $ $ diskutil eraseDisk MS-DOS &amp;#34;ESXI&amp;#34; MBR disk2   之后，我在Finder中也看到了标识符。    第3步：弹出U盘 我使用 &amp;ldquo;unmountDisk &amp;ldquo;命令弹出该卷。 x  &amp;ndash;  +   Terminal   $ $ diskutil unmountDisk /dev/disk2   见。    第4步：使记忆棒可启动 现在我们输入命令 &amp;ldquo;sudo fdisk -e /dev/disk2&amp;rdquo;，然后输入 &amp;ldquo;f 1&amp;rdquo;、&amp;ldquo;write &amp;ldquo;和 &amp;ldquo;quit&amp;rdquo;，见。    第5步：复制数据 现在我必须下载ESXi-ISO：https://www.</description>
    </item>
    
    <item>
      <title>容器的伟大之处：在Synology Diskstation上运行Youtube下载器</title>
      <link>https://www.christian-knedel.de/zh/post/2020/february/20200227-docker-youtube-dl/</link>
      <pubDate>Thu, 27 Feb 2020 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2020/february/20200227-docker-youtube-dl/</guid>
      <description>我的许多朋友都知道，我在我的Homelab - Network上运行一个私人学习视频门户。我把过去学习门户会员的视频课程和Youtube上的好教程保存在我的NAS上供离线使用。    随着时间的推移，我已经收集了8845个视频课程，其中有282616个独立视频。总的运行时间相当于2年左右。绝对疯狂！在本教程中，我展示了如何用Docker下载服务备份好的Youtube教程，以达到离线的目的。
专业人士的选择 作为一个有经验的Synology用户，你当然可以用SSH登录并通过Docker Compose文件安装整个设置。
version: &amp;quot;2&amp;quot; services: youtube-dl: image: modenaf360/youtube-dl-nas container_name: youtube-dl environment: - MY_ID=admin - MY_PW=admin volumes: - ./YouTube:/downfolder ports: - 8080:8080 restart: unless-stopped 步骤1 首先，我为下载创建一个文件夹。我进入 &amp;ldquo;系统控制&amp;rdquo;-&amp;gt;&amp;ldquo;共享文件夹&amp;rdquo;，创建一个名为 &amp;ldquo;下载 &amp;ldquo;的新文件夹。    第2步：搜索Docker镜像 我在Synology Docker窗口中点击 &amp;ldquo;注册 &amp;ldquo;标签，并搜索 &amp;ldquo;youtube-dl-nas&amp;rdquo;。我选择Docker镜像 &amp;ldquo;modenaf360/youtube-dl-nas&amp;rdquo;，然后点击 &amp;ldquo;最新 &amp;ldquo;标签。    图像下载后，可作为图像使用。Docker区分了两种状态，容器 &amp;ldquo;动态状态 &amp;ldquo;和图像/影像（固定状态）。在我们从镜像中创建一个容器之前，必须进行一些设置。
第3步：将图像投入运行。 我双击我的YouTube-DL-NAS图像。    然后我点击 &amp;ldquo;高级设置&amp;rdquo;，激活 &amp;ldquo;自动重新启动&amp;rdquo;。我选择 &amp;ldquo;卷 &amp;ldquo;选项卡并点击 &amp;ldquo;添加文件夹&amp;rdquo;。我在那里创建了一个新的数据库文件夹，挂载路径为&amp;rdquo;/downfolder&amp;rdquo;。    我为 &amp;ldquo;Youtube下载器 &amp;ldquo;容器分配了固定的端口。如果没有固定的端口，可能是 &amp;ldquo;Youtube下载器 &amp;ldquo;在重启后运行在不同的端口。    最后，我输入两个环境变量。变量 &amp;ldquo;MY_ID &amp;ldquo;是我的用户名，&amp;ldquo;MY_PW &amp;ldquo;是我的密码。    做完这些设置后，就可以开始下载器了!</description>
    </item>
    
    <item>
      <title>容器的伟大之处：用Calibre和Docker自动标记PDF文件</title>
      <link>https://www.christian-knedel.de/zh/post/2020/february/20200227-calibre-heise-ix-script/</link>
      <pubDate>Thu, 27 Feb 2020 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2020/february/20200227-calibre-heise-ix-script/</guid>
      <description>在PDF中添加正确的元信息往往是很乏味的。我自己将下载的PDF文件从我的Heise IX订阅账户中分类到我的私人Calibre图书馆。    因为这个过程每个月都在重复，所以我想出了以下设置。我只把我的新PDF拖入我的资料库。    我已经创建了一个容器，将我的Calibre库作为一个卷（-v &amp;hellip;:/books）获得。在这个容器中，我安装了以下软件包。 x  &amp;ndash;  +   Terminal   $ apt-get update &amp;amp;&amp;amp; apt-get install -y xpdf calibre   现在我的脚本搜索符合 &amp;ldquo;IX*.pdf &amp;ldquo;模式的新PDF文件。从每个PDF中，前5页被导出为文本。然后，所有出现在这个单词列表中的单词都被删除：https://raw.githubusercontent.com/ChristianKnedel/heise-ix-reader-for-calibre/master/blacklist.txt
#!/bin/bash export LANG=C.UTF-8 mkdir /tmp/worker1/ find /books/ -type f -iname &#39;*.pdf&#39; -newermt 20201201 -print0 | while IFS= read -r -d &#39;&#39; line; do calibreID=$(echo &amp;quot;$line&amp;quot; | sed -r &#39;s/.*\(([0-9]+)\).*/\1/g&#39;) echo &amp;quot;bearbeite $clearName&amp;quot; echo &amp;quot;id $calibreID&amp;quot;; cp &amp;quot;$line&amp;quot; /tmp/worker1/test.</description>
    </item>
    
    <item>
      <title>容器的伟大之处：用Docker Compose运行Calibre (Synology pro设置)</title>
      <link>https://www.christian-knedel.de/zh/post/2020/february/20200221-docker-calibre-pro/</link>
      <pubDate>Fri, 21 Feb 2020 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2020/february/20200221-docker-calibre-pro/</guid>
      <description>这个博客上已经有一个比较简单的教程：X0。本教程适用于所有Synology DS专业人员。
第1步：准备好Synology 首先，必须在 DiskStation 上激活 SSH 登录。要做到这一点，请进入 &amp;ldquo;控制面板&amp;rdquo;&amp;gt;&amp;ldquo;终端&amp;rdquo;。    然后你可以通过 &amp;ldquo;SSH&amp;rdquo;、指定的端口和管理员密码来登录（Windows用户使用Putty或WinSCP）。    我通过终端、winSCP或Putty登录，并将这个控制台打开以备不时之需。
第2步：创建一个图书文件夹 我为Calibre库创建一个新的文件夹。要做到这一点，我调用 &amp;ldquo;系统控制&amp;rdquo;-&amp;gt;&amp;ldquo;共享文件夹&amp;rdquo;，并创建一个名为 &amp;ldquo;书籍 &amp;ldquo;的新文件夹。如果还没有 &amp;ldquo;Docker &amp;ldquo;文件夹，那么也必须创建它。    第3步：准备好书夹 现在必须下载并解压以下文件：https://drive.google.com/file/d/1zfeU7Jh3FO_jFlWSuZcZQfQOGD0NvXBm/view。内容（&amp;ldquo;metadata.db&amp;rdquo;）必须放在新书目录中，见。    第4步：准备好Docker文件夹 我在Docker目录下创建一个名为 &amp;ldquo;calibre &amp;ldquo;的新目录。    然后我换到新的目录，并创建一个名为 &amp;ldquo;calibre.yml &amp;ldquo;的新文件，内容如下。
version: &#39;2&#39; services: calibre-web: image: linuxserver/calibre-web container_name: calibre-web-server environment: - PUID=1026 - PGID=100 - TZ=Europe/Berlin volumes: - /volume1/Buecher:/books - /volume1/docker/calibre:/briefkaste ports: - 8055:8083 restart: unless-stopped 在这个新文件中，有几个地方必须调整如下：* PUID/PGID：必须在PUID/PGID中输入DS用户的用户和组ID。这里我使用 &amp;ldquo;步骤1 &amp;ldquo;中的控制台和 &amp;ldquo;id -u &amp;ldquo;命令来查看用户ID。用 &amp;ldquo;id -g &amp;ldquo;命令，我得到了组的ID。* ports: 对于端口，前面的部分 &amp;ldquo;8055: &amp;ldquo;必须被调整。directories这个文件中的所有目录必须被纠正。正确的地址可以在DS的属性窗口中看到。(屏幕截图如下)    第5步：测试开始 在这一步，我也可以很好地利用控制台。我换到Calibre目录，通过Docker Compose启动那里的Calibre服务器。 x  &amp;ndash;  +   Terminal   $ cd /volume1/docker/calibre $ sudo docker-compose -f calibre.</description>
    </item>
    
    <item>
      <title>树莓派：PI CPU的无热性</title>
      <link>https://www.christian-knedel.de/zh/post/2020/february/20200214-rpi-cpu-temp/</link>
      <pubDate>Fri, 14 Feb 2020 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2020/february/20200214-rpi-cpu-temp/</guid>
      <description>如果你想在某个温度下关闭树莓，那么你就来对地方了。我有一个脚本，通过Crontab检查CPU温度。
#!/bin/sh # This script reads the Broadcom SoC temperature value and shuts down if it # exceeds a particular value. # 80ºC is the maximum allowed for a Raspberry Pi. # Get the reading from the sensor and strip the non-number parts SENSOR=&amp;quot;`/opt/vc/bin/vcgencmd measure_temp | cut -d &amp;quot;=&amp;quot; -f2 | cut -d &amp;quot;&#39;&amp;quot; -f1`&amp;quot; # -gt only deals with whole numbers, so round it. TEMP=&amp;quot;`/usr/bin/printf &amp;quot;%.</description>
    </item>
    
    <item>
      <title>生成PDF页面概述</title>
      <link>https://www.christian-knedel.de/zh/post/2020/february/20200214-imagemagick-pdf-overview/</link>
      <pubDate>Fri, 14 Feb 2020 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2020/february/20200214-imagemagick-pdf-overview/</guid>
      <description>如果你想从一个PDF文件中创建一个页面概述图像，那么你就来对地方了    第1步：创建工作文件夹 使用该命令创建一个临时工作文件夹。 x  &amp;ndash;  +   Terminal   $ mkdir /tmp/bilder  
第2步：独立的页面 以下命令为每个PDF页面创建一个图像。 x  &amp;ndash;  +   Terminal   $ convert 716023b632a9cbe6cad3ab368c202288.pdf /tmp/bilder/page.png  
第3步：安装图像 现在只需要把拼贴画放在一起。 x  &amp;ndash;  +   Terminal   $ montage /tmp/bilder/* -shadow -geometry &amp;#39;400x400&amp;#43;2&amp;#43;2&amp;gt;&amp;#39; -background &amp;#39;#f1f1f1&amp;#39; uebersich.jpg</description>
    </item>
    
    <item>
      <title>使用RaspberryPiZeroW和LibreElec的智能电视</title>
      <link>https://www.christian-knedel.de/zh/post/2019/july/20190717-libreelec/</link>
      <pubDate>Wed, 17 Jul 2019 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2019/july/20190717-libreelec/</guid>
      <description>智能电视可能是定时炸弹。通常情况下，电视操作系统含有严重的漏洞，或者没有保持最新状态。一个好的解决方案可以是一个独立的MediaPC操作系统。LibreElec在最弱的树莓上运行，可以用电视的遥控器控制。LibreElec比SmartTv操作系统更容易定制，并提供各种应用/模块。你只需要一个RaspberryZeroW和一张空白SD卡。
步骤1。 从https://www.raspberrypi.org/downloads/noobs/ 下载Noobs安装程序。
第2步。 在空的SD卡上解压这个压缩文件。 &amp;ldquo;    &amp;rdquo; 完成了!现在你可以把RaspberryPiZero连接到电视上。然后你会看到安装菜单。 &amp;ldquo;    &amp;rdquo; 现在请选择 &amp;ldquo;LibreElec RPI &amp;ldquo;并点击 &amp;ldquo;安装&amp;rdquo;。 &amp;ldquo;    &amp;rdquo; 在这之后，安装完成并可启动 &amp;ldquo;    &amp;rdquo; 现在你可以将这个MediaPc连接到外部资源，如NAS或安装Youtube等应用程序。玩得开心!
&amp;ldquo;    &amp;rdquo; 正如已经写过的，你也可以通过CEC控制器使用你的电视遥控器。</description>
    </item>
    
    <item>
      <title>阿特拉斯公司的酷事：为我的竹子监视器做宣传</title>
      <link>https://www.christian-knedel.de/zh/post/2021/april/20210402-bamboo-monitor/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://www.christian-knedel.de/zh/post/2021/april/20210402-bamboo-monitor/</guid>
      <description>如何为Bamboo、Jenkins或Gitlab创建一个构建监视器？我今晚就能想出办法来!我已经写过一个类似的Gitlab问题板教程。    本教程的基础是Raspberry Imager和 &amp;ldquo;Raspberry Pi OS Lite &amp;ldquo;操作系统。安装完操作系统后，可以将SD卡插入树莓中。在我的例子中，这是一个Raspberry Pi Zero。          第1步：安装火柴盒/窗口管理器 要在信息亭模式下操作树莓，需要一个窗口管理器和一个浏览器。这些都是用以下命令安装的。 x  &amp;ndash;  +   Terminal   $ sudo apt-get install xorg nodm matchbox-window-manager uzbl xinit unclutter vim  
第2步：我创建一个仪表板用户 通过以下命令，我创建了一个名为 &amp;ldquo;dashboard &amp;ldquo;的新用户。 x  &amp;ndash;  +   Terminal   $ sudo adduser dashboard  
第3步：配置xServer和窗口管理器 以下所有步骤必须在 &amp;ldquo;仪表板 &amp;ldquo;用户会话中进行。我改用 &amp;ldquo;su &amp;ldquo;的会话。 x  &amp;ndash;  +   Terminal   $ sudo su dashboard</description>
    </item>
    
  </channel>
</rss>
